使用php提取文件名为的部分路径
我需要使用php提取一部分URL。url的最后6段是我需要的部分。url的第一部分在目录的长度和数量上有所不同。因此,如果我有这样一个url: 或者这个:使用php提取文件名为的部分路径,php,regex,Php,Regex,我需要使用php提取一部分URL。url的最后6段是我需要的部分。url的第一部分在目录的长度和数量上有所不同。因此,如果我有这样一个url: 或者这个: /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(explo
/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\u 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\u url
。但是,如果您需要处理每个段(如按要求仅删除最后六个),则使用分解
/operate/内爆
的通用模式
在上面,我将这些步骤分开,以便您可以调试并选择最适合您的部分。您的方法很好,尽管在其中添加
parse\u 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\u url
。但是,如果您需要处理每个段(如按要求仅删除最后六个),则使用分解
/operate/内爆
的通用模式
我在上面将这些步骤分开,以便您可以调试并选择最适合您的部分。使用此选项,根据需要替换$url:
$url= "https://www.random.vov/part1/part2/part3/2016/08/file.pdf";
preg_match("%/[^/]*?/[^/]*?/[^/]*?/[^/]*?/[^/]*?/[^/]*?$%", $url, $matches);
echo $matches[0];
致以最良好的祝愿 使用此选项,根据需要替换$url:
$url= "https://www.random.vov/part1/part2/part3/2016/08/file.pdf";
preg_match("%/[^/]*?/[^/]*?/[^/]*?/[^/]*?/[^/]*?/[^/]*?$%", $url, $matches);
echo $matches[0];
致以最良好的祝愿 你只想要“part1”之后的所有内容吗?如果你确实想要“part1”之后的所有内容,而不考虑长度,你可以简单地在part1上拆分。如果它不会出现两次
explode(“/part1/”,$str)代码>是否只需要“part1”之后的所有内容?如果您确实需要“part1”之后的所有内容,而不考虑长度,则可以简单地在part1上拆分。如果它不会出现两次explode(“/part1/”,$str)代码>完美。非常感谢,太好了。非常感谢你。