PHP摆脱了斜线的完整路径

1 php string

我有一个完整的路径,我想删除它的某些级别.所以,例如,

/home/john/smith/web/test/testing/nothing/
Run Code Online (Sandbox Code Playgroud)

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

/test/testing/nothing/
Run Code Online (Sandbox Code Playgroud)

做这件事会有什么好处?

谢谢

tro*_*skn 7

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

join("/", array_slice(explode("/", $path), 5));
Run Code Online (Sandbox Code Playgroud)

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

preg_replace('~^/home/john/smith/web/~', '', $path);
Run Code Online (Sandbox Code Playgroud)

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