[英]RegEx for capturing ID numbers in URLs
我想用preg_match
捕获URL中的ID。
/news.[a-z0-9A-Z_ -]*.?(\d+).?(?:page)?.?([0-9]+)?\.html
我想抓住(\\ d +)网址吗?
http://localhost/news/content-287.html
==> preg_match抓住这个:
Array:
0 => string '/news/content-287.html' (length=22)
1 => string '7' (length=1)
我该如何解决这个问题?
编辑:
理想情况下,我想要一个可以是这样的网址:
/news/title-is/page=2.html并抓住标题ID和页码...
:D谢谢艾玛
您可能希望简化表达式。 例如,在这里我们可以简单地使用捕获组来定位URL中所需的ID。 也许,这个表达就足够了:
\/news\/([a-z-]+)([0-9]+)\.html
如果需要,您还可以添加/减少其边界。 例如,您可以添加任何其他字符,这些字符可能位于此组中的ID之前([az-]+)
,然后您的表达式将更改为:
\/news\/([a-z-\/=]+)([0-9]+)\.html
如果这不是您想要的表达式,您可以在regex101.com中修改/更改表达式。
您还可以在jex.im中可视化表达式:
$pattern = '/\/news\/([a-z-\/=\?]+)([0-9]+)\.html/is';
$subject = 'http://localhost/news/content/title-id/id=287.html';
preg_match_all($pattern, $subject, $matches);
var_dump($matches);
array(3) {
[0]=>
array(1) {
[0]=>
string(34) "/news/content/title-id/id=287.html"
}
[1]=>
array(1) {
[0]=>
string(20) "content/title-id/id="
}
[2]=>
array(1) {
[0]=>
string(3) "287"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.