如何在PHP中从给定字符串中删除$#u SERVER[';DOCUMENT#u ROOT';]

如何在PHP中从给定字符串中删除$#u SERVER[';DOCUMENT#u ROOT';],php,string,oop,Php,String,Oop,如何从这样的字符串中删除$\u SERVER['DOCUMENT\u ROOT'] /home/bla/test/pic/photo.jpg 结果应该是这样的 /test/pic/photo.jpg 我还需要从/test/pic/photo.jpg拍摄photo.jpg。如果DocumentRoot对应于要删除的字符串部分,可以使用以下解决方案: 但是请注意,如果$\u服务器['DOCUMENT\u ROOT']的内容出现在字符串中的其他位置,则会遇到问题:每次都会将其删除 如果要确保只从字符串

如何从这样的字符串中删除
$\u SERVER['DOCUMENT\u ROOT']
/home/bla/test/pic/photo.jpg

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


我还需要从/test/pic/photo.jpg拍摄photo.jpg。如果DocumentRoot对应于要删除的字符串部分,可以使用以下解决方案:

但是请注意,如果
$\u服务器['DOCUMENT\u ROOT']
的内容出现在字符串中的其他位置,则会遇到问题:每次都会将其删除

如果要确保只从字符串开头删除,可以使用一些正则表达式:

$docroot = '/home/bla';
$path = '/home/bla/test/pic/photo.jpg';
echo preg_replace('/^' . preg_quote($docroot, '/') . '/', '', $path);
请注意正则表达式开头的
^
(表示它只应在字符串开头匹配)——并且不要忘记使用从文档根转义特殊字符


当您有包含目录+名称的路径时,要获取文件名,可以使用函数;例如,这部分代码:

echo basename('/test/pic/photo.jpg');
将为您提供以下输出:

photo.jpg

如果DocumentRoot对应于要删除的字符串部分,则可以使用以下解决方案:

但是请注意,如果
$\u服务器['DOCUMENT\u ROOT']
的内容出现在字符串中的其他位置,则会遇到问题:每次都会将其删除

如果要确保只从字符串开头删除,可以使用一些正则表达式:

$docroot = '/home/bla';
$path = '/home/bla/test/pic/photo.jpg';
echo preg_replace('/^' . preg_quote($docroot, '/') . '/', '', $path);
请注意正则表达式开头的
^
(表示它只应在字符串开头匹配)——并且不要忘记使用从文档根转义特殊字符


当您有包含目录+名称的路径时,要获取文件名,可以使用函数;例如,这部分代码:

echo basename('/test/pic/photo.jpg');
将为您提供以下输出:

photo.jpg
链接:
-
-

链接:
-
-

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

// output: photo.jpg

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

// output: photo.jpg