1

preg_match()このページから 2 番目の単一行 RegEx を使用しようとしています: http://daringfireball.net/2010/07/improved_regex_for_matching_urls

(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

常に取得:

... の不明な修飾子 '\'

この正規表現を正しく使用する方法を教えてもらえますか、preg_match()または正規表現が正しくありませんか?

4

3 に答える 3

1

正規表現を区切り文字で囲み (この場合、~正規表現のどこにも使用されていないため推奨します) ~i、インライン修飾子 ( ) の代わりにモード修飾子 ( )を使用する必要があります(?i)

~\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))~i
于 2013-02-13T08:34:48.320 に答える
1

この機能filter_varにより、正規表現を使用せずにメール、IP、URL を簡単に照合できます。

これを使用してみてください:

if(filter_var($url, FILTER_VALIDATE_URL) {
    // match!
}

すべてのフィルターのリスト: http://www.php.net/manual/en/filter.filters.php

于 2013-02-13T08:35:09.673 に答える
0

PHPマニュアルの「区切り文字」セクションを参照してください。

PCRE関数を使用する場合は、パターンを区切り文字で囲む必要があります。区切り文字には、英数字、円記号、空白以外の任意の文字を使用できます。

よく使用される区切り文字は、スラッシュ(/)、ハッシュ記号(#)、チルダ(〜)です。

于 2013-02-13T08:39:06.907 に答える