使用php提取带有文件名的路径的一部分

2024-01-04

我需要使用 php 提取部分网址。 url 的最后 6 段是我需要的部分。 URL 的第一部分的长度和目录数量各不相同。所以如果我有一个像这样的网址:

https://www.random.ccc/random2/part1/part2/part3/2017/08/file.txt https://www.random.ccc/random2/part1/part2/part3/2017/08/file.txt

or this:

https://www.random.vov/part1/part2/part3/2016/08/file.pdf https://www.random.vov/part1/part2/part3/2016/08/file.pdf

我需要的是这样的:

/part1/part2/part3/2017/08/file.txt

or this:

/part1/part2/part3/2016/08/file.pdf

我已经尝试过这个:

$string = implode("/",array_slice(explode("/",$string,8),6,4));

这在第一个示例中可以正常工作,但在第二个示例中则不行。我不太擅长正则表达式,我想就是这样。最优雅的解决方案是什么?


你的方法很好,尽管添加parse_url在那里隔离路径会有很大帮助:

$path  = parse_url($url, PHP_URL_PATH); // just the path part of the URL
$parts = explode('/', $path);           // all the components
$parts = array_slice($parts, -6);       // the last six
$path  = implode('/', $parts);          // back together as a string

请访问 3v4l.org 在线尝试。 https://3v4l.org/YYXh3

现在,要获得资格:如果您只需要string路径的一部分,然后使用parse_url。但是,如果您需要处理每个段(例如按照要求仅删除最后六个),则使用以下常见模式explode/操纵/implode.

我在上面将每个步骤分开,以便您可以调试并选择最适合您的部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用php提取带有文件名的路径的一部分 的相关文章

随机推荐