2016-06-26 11 views
0

$_SERVER['REQUEST_URI']は親ディレクトリとファイル名を返します。例:directory/class/method < - MVCパターン。
$_SERVER['REQUEST_URI']$_SERVER['PATH_INFO']のように返信します。
私はたぶん誰かがあなたが$_SERVER['PATH_INFO']を使用しない理由を言うと知っていますか?
ウェブサーバーが残念ながらPATH_INFOをサポートしていないためです。

私が望むのはclass/methodではないdirectory/class/methodです。

ディレクトリが存在する可能性があります。したがって、ディレクトリが存在するかどうか最初にチェックする必要があります。

+0

はあなたには、いくつかのコードを試してみましたか?私たちが確認できるように質問にそれを含めてください。 – silverstrike

+0

@ silverstrike:残念ながら、私はそれをすることは考えていませんが、私は手順を知っています:ディレクトリが存在するかどうか、存在する場合はそれを削除し、存在しない場合は何もしません。 –

+0

多分興味深い? http://stackoverflow.com/questions/5598480/php-parse-current-url –

答えて

0

あなたが試みた:

$path = explode('/',$_SERVER['REQUEST_URI'],2)[1]; 

2は、配列要素の限界であり、[1]が第二要素(アレイ間接参照)を返すためのショートカットです。あなたが望むものを得るために、これらの値を調整する必要があるかもしれません。

(5.4.xで追加された)配列逆参照をサポートしていない、サポートされていないバージョンまたは古いPHPバージョンの代替バージョンです。

$raw = explode('/',$_SERVER['REQUEST_URI'],2); 
$path = $raw[1]; 
+0

ありがとうございますが、残念ながら、動作しません。入力( 'http:// localhost/directory/welcome/greeting')、出力' Array([0] => /) 'です。また、質問の追加された更新を参照してください –

+0

あなたは私が投稿したコードを使用しなかったか、あなたが終わったときに何かが非常に異なっています。どのPHPバージョンを使用していますか(これは動作しないためには古くなるはずです)。 – Tigger

+0

PHP 5.3.27とPHP 5.4.16は同じことをしています。 –

0

私はTiggerの答えをチェックしました。あなたはこれを試すことができます:

$url = str_replace('http://', '', 'http://localhost/directory/welcome/greeting'); 

$path = explode('/',$url,3)[2]; 
echo $path; 

私は、httpを除去するために必要://またはhttps://

+0

ありがとうございますが、私は文字列などを置き換えたくないので、これらのステップを実行したい、ディレクトリが '$ _SERVER ['REQUEST_URI']'に存在するかどうかを確認してくださいもしそうでなければ何もしません。 –

関連する問題