2010-03-03 54 views
0

給定的字符串[「DOCUMENT_ROOT」]如何從一個字符串中刪除$_SERVER['DOCUMENT_ROOT']這樣 /home/bla/test/pic/photo.jpg

的結果應該這樣 /test/pic/photo.jpg

我還需要如果你的DocumentRoot的對應要到字符串的一部分從/test/pic/photo.jpg

回答

4

採取photo.jpg刪除,解決方案可以使用str_replace

echo str_replace($_SERVER['DOCUMENT_ROOT'], '', '/home/bla/test/pic/photo.jpg'); 

但是請注意,您將遇到$_SERVER['DOCUMENT_ROOT']內容中的問題出現在字符串的其他位置:每次都會將其刪除。

如果你想確保它只是從字符串的開頭移除,一個解決方案是使用一些正則表達式:

$docroot = '/home/bla'; 
$path = '/home/bla/test/pic/photo.jpg'; 
echo preg_replace('/^' . preg_quote($docroot, '/') . '/', '', $path); 

注意^在正則表達式的開始(以表明它應該只匹配字符串的開頭) - 並且不要忘記使用preg_quote從文檔根目錄中跳出特殊字符。


並且當您有一個包含目錄+名稱的路徑時獲取文件的名稱,可以使用basename函數;例如,這段代碼部分:

echo basename('/test/pic/photo.jpg'); 

會給你這樣的輸出:

photo.jpg 
+0

謝謝帕斯卡爾有一個愉快的一天 – streetparade 2010-03-03 12:20:48

+0

謝謝:-)你也是。 – 2010-03-03 12:23:24

0

..... ...

echo basename(str_replace($_SERVER['DOCUMENT_ROOT'], '', '/home/bla/test/pic/photo.jpg')); 

// output: photo.jpg