我需要使用 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(使用前将#替换为@)