[英]preg_match, find and extract
我正在使用它来确定字符串是否看起来像正确的url,然后提取一个值
if (preg_match('#^(https?:\/\/)?(www.)?site.com\/cat\/(aaa\d{5,30})\/#', $url, $urlid)) {
echo $urlid[3];
}
它可以正常工作,但是我认为它可以更加精简/改进(或者只是更好的做法)。 我应该添加一些“负向超前”,“非捕获”还是其他?
例如(https?:\\/\\/)?(www.)?
只是一个快速的想法。 它可以工作,但是...应该真的放在括号中还是有更好的方法?
您可以这样写:
if (preg_match('~^(?:https?://)?(?:www\.)?site\.com/cat/(aaa\d{5,30})/~', $url, $urlid))
echo $urlid[1];
改进:
(?:...)
/
不用作分隔符时 .
否则,它不会被视为文字字符 优点:
\\.
以来,该模式不再含糊不清\\.
匹配点而不是其他字符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.