首页 / PHP / 网址的PHP preg_match部分
网址的PHP preg_match部分
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了网址的PHP preg_match部分,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1297字,纯文字阅读大概需要2分钟。
内容图文
![网址的PHP preg_match部分](/upload/InfoBanner/zyjiaocheng/688/da6c84d5bac6475495a4357661dbad15.jpg)
我正在尝试在PHP中创建一个url路由器,该路由器的工作方式类似于django.
问题是,我不太了解php正则表达式.
我希望能够匹配这样的网址:
/post/5/
/article/slug-goes-here/
我有一系列的正则表达式:
$urls = array(
"(^[/]$)" => "home.index",
"/post/(?P<post_id>\d+)/" => "home.post",
);
数组中的第一个正则表达式可匹配/的主页,但我无法使第二个正则表达式起作用.
这是我用来匹配它们的代码:
foreach($urls as $regex => $mapper) {
if (preg_match($regex, $uri, $matches)) {
...
}
}
我还应该注意,在上面的示例中,我尝试匹配URL中的post_id:/ post / 5 /,以便将5传递给我的方法.
解决方法:
您必须定界正则表达式.分隔允许您提供“选项”(例如,不区分大小写的“ i”)作为模式的一部分:
,/post/(?P<post_id>\d+)/,
在这里,我用逗号分隔了正则表达式.
如您所发布的,您的正则表达式以/分隔,这意味着它将第二个/之后的所有内容都视为“选项”,并且仅尝试匹配“ post”部分.
您要匹配的示例看起来并不是基于当前正则表达式的实际示例.
如果您使用的是正则表达式,那么它会匹配类似的东西;
/post/P1234/
然后,以下内容:
preg_match(',/post/(P\d+)/,', '/post/P1234/', $matches);
print_r($matches);
将导致:
Array
(
[0] => /post/P1234/
[1] => P1234
)
希望可以为您清除它:)
编辑
根据对您的OP的评论,您仅尝试匹配URL的/ post /部分后的数字,因此此版本略有简化:
preg_match(',/post/(\d+)/,', '/post/1234/', $matches);
print_r($matches);
将导致:
Array
(
[0] => /post/1234/
[1] => 1234
)
内容总结
以上是互联网集市为您收集整理的网址的PHP preg_match部分全部内容,希望文章能够帮你解决网址的PHP preg_match部分所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。