[英]extract part of a path with filename with php
我需要使用php提取一部分网址。 网址的最后6段是我需要的部分。 url的第一部分的长度和目录数各不相同。 因此,如果我有这样的网址:
https://www.random.ccc/random2/part1/part2/part3/2017/08/file.txt
或这个:
https://www.random.vov/part1/part2/part3/2016/08/file.pdf
我需要的是:
/part1/part2/part3/2017/08/file.txt
或这个:
/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
现在,要进行限定:如果只需要路径的字符串部分,请使用parse_url
。 但是,如果您需要处理每个段(例如,按要求仅删除最后六个段),请使用explode
/ manipulate / implode
的通用模式。
我在上面将这些步骤中的每一个都分开了,因此您可以调试并选择最适合您的部分。
使用它,根据需要替换$ url:
$url= "https://www.random.vov/part1/part2/part3/2016/08/file.pdf";
preg_match("%/[^/]*?/[^/]*?/[^/]*?/[^/]*?/[^/]*?/[^/]*?$%", $url, $matches);
echo $matches[0];
最好的祝福!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.