0

私は定期的な表現にあまり精通していないので、なぜこのエラーが発生するのかわかりません。

次のコードを使用して、文字列内のすべての電子メールを照合$strし、配列に保存しています$match

preg_match_all(
    "/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/",
    $str,
    $match
);

このエラーが発生したため、正規表現(ここから取得)に問題があるようです。

警告:preg_match_all()[function.preg-match-all]:38行目のC:\ xampp \ htdocs \ project \ Framework\Sanitizer.class.phpの不明な修飾子'='

誰かが何が問題なのか教えてもらえますか?

ありがとう

4

2 に答える 2

4

等号になる前にスラッシュをエスケープする必要があります。例:

preg_match_all(
    "/^[a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/",
    $str,
    $match
);

「/」は式全体の区切り文字であるため、正規表現自体でエスケープする必要があります

于 2012-04-05T19:45:41.420 に答える
1

その文字列内の多くの文字を円記号でエスケープする必要があります。脱出したいもののいくつかは:/?^{|}です。

私はそれを次のように書いたでしょう:

preg_match_all(
    "/^[a-zA-Z0-9.!#$%&’*+\/=\?\^_`\{\|\}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/",
    $str,
    $match
);

このサイトは、電子メールアドレスの照合に関して非常に便利です。

http://www.regular-expressions.info/email.html

于 2012-04-05T19:45:31.240 に答える