从目录路径字符串中删除根目录-PHP
我有一个类似于从目录路径字符串中删除根目录-PHP,php,Php,我有一个类似于$path=“dir1/dir2/dir1/dir4/”的变量等。。等等 我想删除第一个成员dir1/,并希望得到类似dir2/dir1/dir4/的结果 我认为可以通过explode('/',$path)将变量设置为数组。如何删除第一个成员vrom数组并将该数组重建为文本变量 如何在PHP中实现这一点 preg_replace('~^[^/]+/~', '', $path); 或者,如果不需要regexp: substr($path, strpos($path, '/') +
$path=“dir1/dir2/dir1/dir4/”的变量代码>等。。等等
我想删除第一个成员dir1/
,并希望得到类似dir2/dir1/dir4/
的结果
我认为可以通过explode('/',$path)
将变量设置为数组。如何删除第一个成员vrom数组并将该数组重建为文本变量
如何在PHP中实现这一点
preg_replace('~^[^/]+/~', '', $path);
或者,如果不需要regexp:
substr($path, strpos($path, '/') + 1);
你可以这样做
$result=分解(“/”,$path);。
您将以数组的形式获得结果。根据您更新的问题
只爆炸成两部分,取第二部分。如果第二个不存在,则将其设为空:
list(, $result) = explode("/", $path, 2) + array( 1 => NULL);
或
@blasteralfred为什么在使用regexp的一个简单行上选择了三行?@meze:regexp比这些函数慢,而且您也可以在一行代码中转换这三行。您如何知道regexp比这些行慢?Regexp并不总是很慢。在某些情况下,regexp将比这三行更快。你不能把它转换成一行代码。它不再是“这三行”,现在不同了;)它变得比regexp解决方案慢,因为在内部它将创建2个数组…@meze:你知道preg_replace internal做什么吗?除非你真的需要,否则不建议使用正则表达式。这个答案缺少教育意义上的解释。并非所有研究人员都理解正则表达式模式语法。在这个答案中可能会有一个警告,即您没有检查===false
的strpos()
,并且任何传入的没有斜杠的字符串都将发生意外的变异。
$array = explode("/", $path);
unset($array[0]);
echo $text = implode("/", $array);
$result = explode("/", $path); // Pull it apart
array_shift($result); // Pop the first index off array
$result = implode("/", $result); // Put it together again