2010-12-07 6 views
0

私はまだPHPを学んでいます。どのようにルートディレクトリを抽出しますか?

'SCRIPT_FILENAME' => string 'D:/Project Storage/wnmp/www/folder/index.php' (length=45) 
'SCRIPT_NAME'  => string '/folder/index.php' (length=18) 
'DOCUMENT_URI' => string '/folder/index.php' (length=18) 
'PHP_SELF'  => string '/folder/index.php' (length=18) 
'REQUEST_URI'  => string '/folder/helloworld/helloworldtwo/etc' (length=15) 

あなたは私だけhelloworld/helloworldtwo/etc

任意のアイデアは、フォルダを抽出取得したい見ることができるように?だからhelloworld/helloworldtwo/etcになるでしょうか?

どのような考えが私のフォルダを$root = 'folder'のように定義していますか?一致すれば抽出しますが、問題は何ですか?

第2のアイデアは、/first/second.php、 から最初のものを得るためにphp_selfまたは上記のものから取得することですが、もう一度、それを行う最良の方法はわかりません。

と正面に2つのフォルダがある場合は別の問題がありますか? btwはリプレイのすべてのおかげで、私はまだいくつかのphp.netを読んで、テストしてみてください。

'SCRIPT_FILENAME' => string 'D:/Project Storage/wnmp/www/folder/index.php' (length=45) 
'SCRIPT_NAME'  => string '/folder/folder2/index.php' (length=18) 
'DOCUMENT_URI' => string '/folder/folder2/index.php' (length=18) 
'PHP_SELF'  => string '/folder/folder2/index.php' (length=18) 
'REQUEST_URI'  => string '/folder/folder2/helloworld/helloworldtwo/etc' (length=15) 

質問は同じですが、私はhelloworld/hellowrodltwo/etcを正しい方法で入手できますか?

編集* みんなのおかげでたくさんの私は解決策

$str = 'folder/folder/helloworld/helloworldtwo/etc'; 
$folder = 'folder/folder'; 
$q = str_replace($folder, NULL, $str); 
echo $q; 

を行っているが、何も/代替またはそれを行うには良い方法がある場合に行ってください。

もう一度おねがいします。

+1

[parse_url](http://php.net/manual/en/function.parse-url.php)と[pathinfo](http:// uk3。 php.net/manual/en/function.pathinfo.php) - 関連する関数(basenameなど)? – Mike

答えて

2

などのURLに問題を与えます'folder /'を区切り文字として使用し、制限を課さないでください。

$str = 'folder/folder/helloworld/helloworldtwo/etc'; 

print_r(explode('folder/', $str)); 

出力は次のようになります。

array (
    0 => '', 
    1 => '', 
    2 => 'helloworld/helloworldtwo/etc', 
) 

が、その後、あなたがURLからあなたが望むどのように多くのフォルダ削除して持つことができ、この2つの機能を結合する文字列

$returnValue = implode('', array (
    0 => '', 
    1 => '', 
    2 => 'helloworld/helloworldtwo/etc', 
)); 

に戻ってそれに参加する破機能を使用することができます文字列の最後にきれいなURLを入れてください。

+0

私は2つのフォルダを持っているとどうですか?質問を編集しました。 –

1

あなたはそれは常にあなたが削除、あなたは同じようなものを使用することができますしたい"/folder/"になることがわかっている場合:

これは、それがすべて /folder/の発生箇所と、空の文字列を置換しdoest何
$extracted = str_replace("/folder/","",$_SERVER['REQUEST_URI'],1); 

Array 
(
    [0] => folder 
    [1] => helloworld/helloworldtwo/etc 
) 

あなたが複数のフォルダを持っている場合は/あなたが使用することを行うことができます。これは、あなたが

$str = 'folder/helloworld/helloworldtwo/etc'; 

print_r(explode('/', $str, 2)); 

出力がされるPHPで爆発機能を使用することができ、そのような/folder/helloworld/folder/helloworld2

+0

スラッシュは常に文字列内にある必要があります。それ以外の場合は問題が発生する可能性があります。 – RobertPitt

関連する問題