繁体   English   中英

RegEx用于捕获URL中的ID号

[英]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中修改/更改表达式。

在此输入图像描述

RegEx电路

您还可以在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM