Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从目录路径字符串中删除根目录-PHP_Php - Fatal编程技术网

从目录路径字符串中删除根目录-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