2011-06-25 38 views
35

これはよくある質問のようですが、私の探しているもののどれもそうではありません。ウェブサイトがある場合:PHP - 現在のURLを取得

www.example.com/folder:

www.example.com/test.php

は私が "test.phpを" と、それはのようなものだ場合を引っ張るしたいです/folder1/test.php

もう一度 "test.php"をプルする必要がありますが、すべてがページの代わりに正確なパスを引っ張っているようです。助言がありますか?

+4

をなぜあなたはURLを求めていない、この質問の対象で、「現在のURLを」持っていますか?また、mod_rewriteがwww.exemple.com/testのURLを強制的にmod_rewriteに書き換えてtest.phpに書き換えた場合は、それはtest.phpかテスト​​ですか? – eis

答えて

43
$query = $_SERVER['PHP_SELF']; 
$path = pathinfo($query); 
$what_you_want = $path['basename']; 

Voila

$filename = basename($_SERVER['REQUEST_URI']); 

の場合: - これはあなたの要求されたファイルの名前を取得します

+0

非常に非常に涼しいありがとう! –

+0

問題はありませんが、答えとして設定することを忘れないでください! :) –

+47

短いバージョン: '$ what_you_want = basename($ _ SERVER ['PHP_SELF']);' – Cyclone

2
$file = $_SERVER["SCRIPT_NAME"]; 
$break = explode('/', $file); 
$pfile = $break[count($break) - 1]; 
+0

これは "/folder1/folder2/test.php"となります –

+0

@Howdy_McGee:本当ですか? '$ pfile'は' test.php'を保持するだけです。 –

+0

@Howdy_McGeeがテストしてくれて、それは私のために働いています: http://localhost/test1/test2/file.phpは "file.php"を出力します –

40

(ちょうどあなたがmod_rewriteのを使用している場合は、ファイルの、本物ではない場所に呼び出さURLに基​​づきます) http://www.example.com/testing01.phphttp://www.example.com/x/y/z/testing01.php両方はあなたを与える:

testing01.php 
+4

これは受け入れられた答えの2倍です。 –

+1

トップの回答とほぼ同じですが、情報の目的でトップの回答が詳細に分かれています。IMO –

+3

@Howdy_McGee:私は同意しません。基本的な違いは、私たちが本当に示すものです。あなたは「_現在のURLを取得_」について尋ねました。 [documentation](http://php.net/manual/en/reserved.variables.server.php)によると: '$ _SERVER ['REQUEST_URI']は、このページにアクセスするために与えられたURIを取得します。 $ _SERVER ['PHP_SELF'] 'は" _現在実行中のスクリプトのファイル名、ドキュメントルート(。)_ "と等価です。例えば、 '/index.html'上記と同じであってもなくてもよい。私は私の答えの違いについて説明しました( 'mod_rewrite'に関する部分)。 – Tadeck

関連する問題