Php 找到第一个单词和最后一个单词的匹配项
我有一个url,看起来像这样Php 找到第一个单词和最后一个单词的匹配项,php,regex,Php,Regex,我有一个url,看起来像这样 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是上面给出的url 基本上我想要匹配 确保目录为待售目录/stuff/
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
是上面给出的url
基本上我想要匹配
used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html
文件必须以used/new开头,以integer.html结尾
在我验证之后,我想获取ID。在本例中,ID是
85934
似乎您想要这样的东西
'~^for-sale/stuff/\S+/(?:used|new)\S*?(\d+)\.html$~'
我建议使用此示例代码和:
$re=“~\\b用于\\-sale\\\/stuff\\/[^]*?\\/(?:已用|新)[^/]*?\-(\\d+\\\\.html\\b~”;
$str=“\n”;
预匹配全部($re,$str,$MATCHS);
正则表达式:\b for \-sale\/stuff\/[^]*?\/(?:used | new)[^/]*?\-(\d+)\.html\b
我假设在一个可变的文本字符串中有几个URL需要验证,因此我建议使用\b
,并且URL位于某个标记内,因此我会使用[^]*?
将捕获限制在标记内
ID将位于第一个捕获组中(由\d+
捕获)。
空格也是不允许的:
[^]*?
,[^/]*?。你是说^for sale/stuff/+/(?:used | new)\S*\d\.html$
?@AvinashRaj更新的问题检查我更新的答案。基本上,在我验证之后,我想获得ID。在这种情况下,ID是85934
@user2636556:我更新了regex和链接。因此,第一个捕获组现在可以在regex101.com上使用ID.worked了,但是在我的代码中,if(preg\u match('/^for sale/stuff/\S+/(?:used/new)/S*?(\d+)\.html$/gm',$pathInfo,$matches)){
我得到了这个警告警告:preg\u match():未知修饰符't'
nvm\.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);