• ベストアンサー

「/」以降の取得について

http://localhost/php/param.php/test 上の様なURL上から、「/」以降の文字の取得をしたいです。 以下の様に作成しましたが、実行結果、何も表示されません。 <?php $file = basename($_SERVER["PHP_SELF"]); $url = "http://" . $_SERVER["SERVER_NAME"].$_SERVER['REQUEST_URI']; preg_match("/".$file."\/(.+$)/",$url,$match); $get = $match[1]; print $get; ?> 記述ミスでしょうか? 困っています。教えて下さい。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.1

http://localhost/php/param.php/test​ >上の様なURL上から、「/」以降の文字の取得をしたいです。 /以降って??? 文字通りとらえると /localhost/php/param.php/test になりますけど? 最後の/以降つまり、test のことですか? それはそれとして、意図がなんであれ、 PHP_SELF = /php/param.php/test SERVER_NAME = localhost REQUEST_URI = /php/param.php/test なので、 >preg_match("/".$file."\/(.+$)/",$url,$match); は preg_match("//php/param.php/test\/(.+$)/","http://localhost/php/param.php/test"); になりますが、これは多分意図と違いますよね。 あと、$が文字列末の意図なら、(.+$)でなく(.+)$です。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

http://localhost/php/param.php/test からpath infoの /test が取得したいと言うことでしょうか $_SERVER["PATH_INFO"] で取得できませんか

すると、全ての回答が全文表示されます。
回答No.3

それぞれの$_SERVERで取ってくる値がどうなっているのかの 問題な気がします。 それぞれ固定値で実験してみた結果 $file = "param.php"; $url = "http://localhost/php/param.php/test"; preg_match( "/".$file."\/(.+$)/", $url, $match ); print $match[1]; ------------------- test ------------------- と表示されたので、 やってることは間違えてはいないと思います。 まぁ、シンプルにしようと思ったら print basename($_SERVER['REQUEST_URI']); で出来るとは思いますが・・・

すると、全ての回答が全文表示されます。
  • dell_OK
  • ベストアンサー率13% (776/5751)
回答No.2

ディレクトリ名を除いた実行ファイル名を取得する方法でしたら、 私は、以下のような方法で取得しています。 $get = end(explode("/",$_SERVER["PHP_SELF"]));

すると、全ての回答が全文表示されます。

関連するQ&A