如何删除$ _ 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
答
$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
谢谢帕斯卡尔有一个愉快的一天 – streetparade 2010-03-03 12:20:48
谢谢:-)你也是。 – 2010-03-03 12:23:24