10

文字列からメールを取得しようとしています:

$string = "bla bla pickachu@domain.com MIME-Version: balbasur@domain.com bla bla bla";
$matches = array();
$pattern = '\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b';
preg_match_all($pattern,$string,$matches);
print_r($matches);

私が得ているエラーは次のとおりです。

区切り文字は英数字またはバックスラッシュであってはなりません

ここから正規表現の構文を取得しましたhttp://www.regular-expressions.info/email.html

4

3 に答える 3

21

このような

$pattern = '/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i';

または小さいバージョン:)

$pattern = '/[a-z\d._%+-]+@[a-z\d.-]+\.[a-z]{2,4}\b/i';
于 2013-02-24T10:45:24.113 に答える
2

PCRE 正規表現関数を使用する場合、パターンを区切り文字で囲む必要があります。

PHP 区切り文字

よく使用される区切り文字は、スラッシュ (/)、ハッシュ記号 (#)、およびチルダ (~) です。以下はすべて、有効な区切りパターンの例です。

/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%

次に、この行を次のように修正する必要があります。

$pattern = '/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/';

また

$pattern = '#\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b#';
于 2013-02-24T10:45:25.247 に答える
1

スラッシュなどの適切な区切り文字でパターンをラップするだけです。そのようです:

$pattern = '/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/';
于 2013-02-24T10:44:58.747 に答える