Php 如何从URL获取部件
很抱歉这个标题可能有误导性。我不知道如何更好地描述它 访问Php 如何从URL获取部件,php,wordpress,Php,Wordpress,很抱歉这个标题可能有误导性。我不知道如何更好地描述它 访问status页面时,我想获取附加的ID。但我不想使用get字段(wordpress将/status?ID=2134设置为/status/?ID=1234——这是唯一的原因) 这是我的网址 http://foo.bar.com/status/1234/ 我想得到1234 好的,很好。例如,我可以使用$\u SERVER[“REQUEST\u URI”]+trim()。也许正则表达式是完成这项工作的关键,因为可以执行类似于/status/1
status
页面时,我想获取附加的ID。但我不想使用get字段(wordpress将/status?ID=2134
设置为/status/?ID=1234
——这是唯一的原因)
这是我的网址
http://foo.bar.com/status/1234/
我想得到1234
好的,很好。例如,我可以使用$\u SERVER[“REQUEST\u URI”]
+trim()
。也许正则表达式是完成这项工作的关键,因为可以执行类似于/status/1234/foo/bar/baz/。
的操作,但我想知道PHP是否内置了一些东西来获取url的这一部分 使用parse_url()
函数,并将其解压缩:
$url = 'http://foo.bar.com/status/1234/';
$path = trim(parse_url($url, PHP_URL_PATH), '/');
$items = explode('/', $path);
$num = array_pop($items);
var_dump($num);
如果您喜欢,也可以使用正则表达式:
$url = 'http://foo.bar.com/status/1234/';
$path = parse_url($url, PHP_URL_PATH);
preg_match('~/status/(?P<num>\d+)/?~', $path, $result);
$num = isset($result['num']) ? $result['num'] : null;
var_dump($num);
$url='1!'http://foo.bar.com/status/1234/';
$path=parse_url($url,PHP_url_path);
预匹配(“~/status/(?P\d+/”,$path,$result);
$num=isset($result['num'])$结果['num']:null;
var_dump($num);
尝试解析URL并返回一个关联数组,该数组包含使用parse\u URL
显示的URL的任何不同组件,使用explode
将其分解,最后使用end
选择状态id
像这样试试
$url = 'http://foo.bar.com/status/1234/';
$statusId = explode('/',trim(parse_url($url, PHP_URL_PATH), '/'));
print end($statusId);
演示版
修剪
-
分解
-
parse_url
-[1]:我所做的:explode('/',parse_url($url,PHP_url_PATH))代码>@Dagon是的,很好。甚至比正则表达式更好的解决方案。但是将解析url(..)
替换为$\u服务器['REQUEST\u URI']
。请随意发布此答案,因为btw$url是有问题的url