使用PHP分割URL

时间:2010-12-20 16:18:21

标签: php url split

我正在创建一个PHP代理,它接受一个url并确认它在我的服务器列表中。

从应用程序导入url时,我将其运行到需要2个解析器标记的问题。我需要它分开“\?”标签和字符串,在我的例子中,“导出?”

我正在使用preg作为第一个标签。这是否接受像我的导出标记这样的字符串,还是有其他方法可以做到这一点?

请告诉我这是如何完成的,或者如果您有更多问题。

4 个答案:

答案 0 :(得分:13)

作为ircmaxell has already stated in the comments,PHP已经具有解析URL的功能:parse_url

如果您有URL路径(我假设您的export?路径后缀加上查询指示符),您可以使用explode将路径拆分为其路径段:

$path = parse_url($url, PHP_URL_PATH);
$segments = explode('/', $path);

然后,您可以使用以下方法之一获取最后一个路径段:

end($segments)
$segments[count($segments)-1]

要处理尾部斜杠,您可以使用rtrim($path, '/')删除它们。

所有在一起:

$url = 'http://www.example.com/subfolders/export?';
$path = parse_url($url, PHP_URL_PATH);
$segments = explode('/', rtrim($path, '/'));
echo end($segments);

答案 1 :(得分:0)

正则表达式应该可以解决问题,如下所示。这就是Django在其URL调度程序中使用的内容

r'^export/$'

答案 2 :(得分:0)

正则表达式是字符串匹配,也可能包含变量匹配。由于?中包含?,因此您必须进行两次分割。首先在export?上,然后在?作为分隔符的每一个上进行第二次传递。如下所示,您只需要分割两个不同的字符串。

$first = preg_split('export\?', ...);
for ($first) {
        array_push ($second,preg_split('\?', ...)');
}

这不是完全有效的PHP,但我希望它足够接近伪代码。

答案 3 :(得分:0)

嘿伙计们我最后使用了一个查找字符串的爆炸(导出?)然后我使用preg split命令来搜索\ ?.这为我提供了我正在寻找的那个。谢谢你们。