PHPでのQUERY_STRINGの使い方

このQ&Aのポイント
  • PHPを勉強中の方へ、QUERY_STRINGの使い方を解説します。
  • URLの?以降の文字列を取得し、正規表現で数式に一致するかどうかを判定したいです。
  • 現在のコードにエラーが出てしまう原因を教えてください。
回答を見る
  • ベストアンサー

PHPでのQUERY_STRINGの使い方

PHPを勉強中です。 URLの?以降の文字列を取得し、それが正規表現で 数字と()、/*+-の数式に一致するかどうかを割り出したいです。 echo preg_match("/[^0-9\(\)\+\*\/-]/", "$_SERVER['QUERY_STRING']"); としたところ、 Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) とエラーが出てしまいます。記述の仕方が悪いのでしょうか。 ご教示お願い致します。

  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

二重引用符で括った内側では変数は展開されますが、だからといってそれに頼るのは(無駄に括るのは)やめましょう。文字列リテラルがなくて変数だけなので二重引用符で括る意味がありません × echo preg_match("/[^0-9\(\)\+\*\/-]/", "$_SERVER['QUERY_STRING']"); ○ echo preg_match("/[^0-9\(\)\+\*\/-]/", $_SERVER['QUERY_STRING']); どうしても二重引用符で括ったままにしたいなら echo preg_match("/[^0-9\(\)\+\*\/-]/", "{$_SERVER['QUERY_STRING']}"); ですね。 http://php.net/manual/ja/language.types.string.php

ns_kurlyv_blue
質問者

お礼

回答ありがとうございます。 回答日付が近く悩んだのですが、細かく解説していただいたのでベストアンサーにさせていただきました。 ありがとうございました。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5078/13272)
回答No.1

> "$_SERVER['QUERY_STRING']" なぜダブルコーテーションで囲っているのでしょうか? 単に変数を渡せばいいのでダブルコーテーションは不要ですし、ダブルコーテーションを除けばエラーは消えます。

ns_kurlyv_blue
質問者

お礼

回答ありがとうございます。 やはりコマンドの理由・動作など勉強不足だなあと痛感しました。

関連するQ&A

  • ブログが見れません。

    暇つぶし感覚でブログを覗いていたのですが、 エラーのようなものがでてしまいました。 Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /virtual/talentblog/public_html/tllink/tllink.php on line 106 なぜですかね? ご指導下さい。

  • 【超初歩】$_POST["Var"]とかダブルクォーテーションの書き方が間違ってますか?

    $sql = "UPDATE Enquete SET MyName = \"$_POST['MyName']\""; という書き方が, Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\temp\temp.php on line 10 みたいな扱いを受けてしまうのはなぜでしょうか. $Name = $_POST["MyName"]; $sql = "UPDATE Enquete SET MyName = \"$Name\""; とすればエラーにならないですが.

    • ベストアンサー
    • PHP
  • PHPですが、エラーがでます。下記の問題があるよう

    なんですが、どこがいけないのでしょうか? $sql = "insert into menber(name,passward) values($_POST["name"]."','".$_POST["passward"].)";//SQL文の作成 ?> エラーはParse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in です。よろしくお願いいたします。

  • PHPでエラーがでてしまって困っています。

    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /Applications/MAMP/htdocs/5-2-1.php on line 30 このエラーを解消できません。 下記は実践マスターPHP+MYSQLという書籍のなかのサンプルなんですが、どこが間違っているかどなたか教えていただけないでしょうか? エラーを検索するとダブルクォーテーションの使い方が原因と書いてあるんですが、最近PHPを勉強したばかりでどうやっても解決できません。 function check_3(&$str){ $str =str_replace($GLOBALS["from"],$GLOBALS["to"],$str);  ←この行でエラー global $msg; $msg = $GLOBALS["from"].'から'.$GLOBALS["to"].'へ置換しました!<br>'; return strlen($str); } 宜しくお願いします。

    • 締切済み
    • PHP
  • PHPのプログラム結果が正しく表示されません

    すいません。現在PHPの勉強をしているのですが、下記のサイトにある通りにプログラムを 作っても Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\test.php on line 6 とエラーが出ます。どうしてでしょうか?他のプログラムは正しく表示されるのですが・・。 http://php.xenophy.com/variable-array/index.html 「配列に値を代入する」から下の全てのプログラムが全てエラーと出ます。 例 <?php $animal[] = "牛"; $animal[] = "馬"; $animal[] = "鹿"; echo "$animal[ 0 ]<br />¥n"; echo "$animal[ 1 ]<br />¥n"; echo "$animal[ 2 ]<br />¥n"; ?> 参考にしているwebページ自体が間違っているのでしょうか?詳しい方アドバイスお願いします。

    • 締切済み
    • PHP
  • エラーの意味!

    初めて見るエラーで困ってます!! どなたか教えてください! Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /***/***/***/test.php on line 331

    • ベストアンサー
    • PHP
  • PHPで出てくる use とは何ですか?

    phpMyAdmin5 をダウンロードしました。 htdocsに解凍し、ブラウザのアドレス欄に HTPP://localhost/phpMyAdmin5/ibndex.php と入力しましたが、次のようなエラーメッセージが出てきました。 Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in C:\xampp\htdocs\phpMyAdmin5\index.php on line 10 そこでindex.phpの10行を見ると use PhpMyAdmin\Controllers\HomeController; となっています。 このuse というのはいったい何なのでしょうか。ネットで調べてもこれに関する情報は何も見つかりませんでした。 詳しい方、どうか教えてください。 また上に書いたようなやり方でphpMyAdminを始められるのでしょうか?

    • ベストアンサー
    • PHP
  • Parse errorについて質問です

    オーサカPHPさんのw3Analyzerと言うアクセス解析を使ってみようと思い 設置してログを見ようとすると、 Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /××××/w3a/w3a.php on line 82 と出るのですが、これはw3a.phpの82行目がおかしいとでているのでしょうか? w3a.phpは一切なにも変更はしていないのですが・・・ PHP4の環境向けに作られていると書いてあり、自分のサーバーのPHPのバージョンを見てみるとPHP 4.4.8と書いてありました。 これはPHP4と言うことでいいのでしょうか?

    • ベストアンサー
    • PHP
  • 「Tok2」無料ホームページについて

    「Tok2」のサイトで無料ホームページを作成してしばらく使っていたら,「Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/tok2/html/sr.tok2.com/chenge2/cms_tool/tmp/www○.tok2.com○○_2007-10.dat on line 53」,日本語だと「エラーを解析してください:エラー(予想外の『「T_STRINGまたはT_VARIABLEまたは中で/家でT_NUM_STRINGを予想する第53行の上で、/tok2/html/sr.tok2.com/chenge2/cms_tool/tmp/www○.tok2.com○○_2007-10.dat)を解析してください」と出て,ブログが表示されなくなってしまったのですが,どうすれば直りますか?

  • switchでエラー

    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\path\file.php on line 11 この行を見る限りどこも悪くは無い気がしますが・・・ (ヒアドキュメント) 10:HEADER_HTML; 11:switch ($_GET['mode']){ 12: case 'edit': どこが悪いのでしょうか。

    • ベストアンサー
    • PHP

専門家に質問してみよう