如何删除$ _ SERVER从PHP

问题描述:

给定的字符串[“DOCUMENT_ROOT”]如何从一个字符串中删除$_SERVER['DOCUMENT_ROOT']这样 /home/bla/test/pic/photo.jpg

的结果应该这样 /test/pic/photo.jpg

我还需要如果你的DocumentRoot的对应要到字符串的一部分从/test/pic/photo.jpg

采取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

$new_string = str_replace($_SERVER['DOCUMENT_ROOT'], '', $string); 
$photo = basename($string); 

链接:
- http://de.php.net/str_replace
- http://de.php.net/basename

..... ...

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

// output: photo.jpg