我正在使用它来确定字符串是否与正确的URL一样,然后提取值
if (preg_match('#^(https?:\/\/)?(www.)?site.com\/cat\/(aaa\d{5,30})\/#', $url, $urlid)) {
echo $urlid[3];
}
它运作正常,但我认为它可能更精益/改进(或者更好的练习)。我应该添加一些“负面预测”,“非捕获”还是其他?
这个例如(https?:\/\/)?(www.)?
只是一个简单的想法。它有效,但......它真的应该在括号中还是有更好的方法?
答案 0 :(得分:1)
你可以这样写:
if (preg_match('~^(?:https?://)?(?:www\.)?site\.com/cat/(aaa\d{5,30})/~', $url, $urlid))
echo $urlid[1];
改进:
(?:...)
/
.
,否则它不会被视为文字角色优点:
\.
匹配点而不是其他角色