我正在尝试使用 PHP 函数“preg_match_all”匹配字符串中的 url。它工作正常,除了它不会匹配带有问号的网址。
例如,这将匹配得很好:
http://espn.com/mlb
但这不匹配:
http://espn.com/mlb?player=71
这是我正在使用的正则表达式,
$regexUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
我无法弄清楚为什么 \S 没有拾取问号。我尝试了很多不同的表达方式,但无法匹配问号。有任何想法吗?
编辑:
事实证明 preg_match_all 返回 true,但我没有转义 preg_match_all 输出中的问号,所以我稍后进行的 preg_replace 调用失败了。