我正在创建一个PHP代理,它接受一个url并确认它在我的服务器列表中。
从应用程序导入url时,我将其运行到需要2个解析器标记的问题。我需要它分开“\?”标签和字符串,在我的例子中,“导出?”
我正在使用preg作为第一个标签。这是否接受像我的导出标记这样的字符串,还是有其他方法可以做到这一点?
请告诉我这是如何完成的,或者如果您有更多问题。
答案 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命令来搜索\ ?.这为我提供了我正在寻找的那个。谢谢你们。