PHP摆脱了斜线的完整路径

时间:2008-12-15 16:45:58

标签: php string

我有一条完整的路径,我想删除它的某些级别。例如,

/home/john/smith/web/test/testing/nothing/

我想摆脱4个级别,所以我得到了

/test/testing/nothing/

这样做会有什么好处?

由于

2 个答案:

答案 0 :(得分:7)

一个简单的解决方案是将路径切割成部分,然后再操作数组,然后再将它重新粘合在一起:

join("/", array_slice(explode("/", $path), 5));

当然,如果您想删除该特定路径,您还可以使用正则表达式:

preg_replace('~^/home/john/smith/web/~', '', $path);

虽然有一个建议。如果您的应用程序经常使用路径,那么创建一个表示路径的类可能是个好主意,以便封装逻辑,而不是在整个地方进行大量的字符串操作。如果你混合绝对路径和相对路径,这尤其是一个好主意。

答案 1 :(得分:-2)

为什么你们都使用正则表达式来完成不需要匹配的东西; CPU周期很有价值!

str_replace会更有效率:

$s_path = '/home/john/smith/web/test/testing/nothing/';
$s_path = str_replace('john/smith/web/test/', '', $s_path);

并使用realpath()解析任何'../../'路径。

请记住dirname(__FILE__)获取CWD,rtrim()对于删除尾部斜杠非常有用..