PHP 関数「preg_match_all」を使用して、文字列内の URL を一致させようとしています。疑問符が含まれる 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 呼び出しが失敗していました。