我有一个url,看起来有点像这个
for-sale/stuff/state/used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html
我正在尝试验证格式,在我的函数中使用这个regex。
if (preg_match('/(?:^|(?:'-))('w+)/g', $pathInfo, $matches)) {
echo $digit = $matches[0];
}
$pathInfo
是上面给出的url。
基本上我想匹配
- 确保目录为
for-sale/stuff/
used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html
文件必须以used/new开头,以integer.html
结尾- 不允许有空格
在我验证之后,我想获得ID。在这种情况下,它是85934
看起来你想要这样的东西,
'~^for-sale/stuff/'S+/(?:used|new)'S*?('d+)'.html$~'
演示
我建议使用这段示例代码和以下正则表达式:
$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);
Regex:'bfor'-sale'/stuff'/[^<> ]*?'/(?:used|new)[^/ ]*?'-('d+)'.html'b
我假设在一个可变的文本字符串中有几个URL需要验证,因此我建议使用'b
,并且URL在某个标签内,因此我使用[^<> ]*?
来限制捕获仅在标签内。
ID将在第一个捕获组中(由'd+
捕获)。也不允许使用空格:[^<> ]*?
,[^/]*?。