我有一个看起来像这样的网址
for-sale/stuff/state/used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html
我尝试使用此正则表达式在我的函数中验证格式。
if (preg_match('/(?:^|(?:\-))(\w+)/g', $pathInfo, $matches)) {
echo $digit = $matches[0];
}
$pathInfo
是上面给出的网址。
基本上我想匹配
for-sale/stuff/
used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html
文件必须以used / new开头,以integer.html
我验证后,我想获得ID。在这种情况下是85934
答案 0 :(得分:1)
答案 1 :(得分:1)
我建议使用此示例代码和following regex:
$re = "~\\bfor\\-sale\\/stuff\\/[^<> ]*?\\/(?:used|new)[^/ ]*?\\-(\\d+)\\.html\\b~";
$str = "<a href=\"for-sale/stuff/state/used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html\"></a>\n<a href=\"for-sale/stuff/state/new-bla-bla2-bla3-bla4-(bla1)-f90-12344.html\"></a>";
preg_match_all($re, $str, $matches);
正则表达式:\bfor\-sale\/stuff\/[^<> ]*?\/(?:used|new)[^/ ]*?\-(\d+)\.html\b
我假设您有几个要在变量文本字符串中验证的网址,因此我建议使用\b
,并且该网址位于某个标记内,因此我使用[^<> ]*?
以便将捕获限制在标签内部。
ID将位于第一个捕获组中(由\d+
捕获)。
还不允许使用空格:[^<> ]*?
,[^ /] *?。