2

フォームに入力された単一の電子メールの正確な一致を見つけたい .txt ファイルがあります。

私が使用した現在のディレクティブ (以下を参照) は、標準形式で機能します。しかし、AJAX 呼び出しと jQuery と組み合わせて使用​​すると、最初に出現したものを見つけるだけで存在を確認できます。

例えば:

その人が「bobby@」と入力すると、not found, good と表示されます。

誰かが完全な電子メール アドレスを入力し、それがファイルに存在する場合、「見つかった」と表示されます。

さて、誰かが「bobby」とだけ入力すると、「見つかりました」と表示され、良くありません。

以下の 3 つの例を使用して、同じ結果を得ました。

if ( !preg_match("/\b{$email}\b/i", $emails )) {

echo "Sorry, not found";

}

と...

if ( !preg_match( "/(?:^|\W){$email}(?:\W|$)/", $emails )) {

echo "Sorry, not found";

}

と...

if ( !preg_match('/^'.$email.'$/', $emails )) {

echo "Sorry, not found";

}

私のAJAX

$.ajax({  
type: "POST",  
url: "email_if_exist.php",  
data: "email="+ usr,
success: function(msg){

私のテキストファイル

Bobby Brown bobby@somewhere.com
Guy Slim guy@somewhere.com
Slim Jim slim@somewhere.com

jQuery 関数を使用して完全な電子メール アドレスのみを受け入れることを考えましたが、スクリプトのどこに配置すればよいかわからなかったこともあり、成功しませんでした。

これに対する解決策を探すのに多くの時間を費やしてきましたが、今、助けを求めています。

乾杯。

4

6 に答える 6

1

テキストファイルには「bobby」が含まれているため、提案しているような正規表現は常に「bobby」を見つけます。有効な電子メールには常に @ が含まれているため、正規表現を実行する前に @ 記号の存在を確認することをお勧めします。次のようなことを試してください:

if (strpos($email,'@')) {
    if ( !preg_match("/\b{$email}\b/i", $emails )) {
        echo "Sorry, not found";
    }
}

編集:mこれを4年後に見ると...修飾子を使用して複数行を指定し、$改行またはEOFに一致するように、正規表現を行末に一致させます。PHP の行は次のようになります。

if ( !preg_match("/\b{$email}$/im", $emails )) {
于 2013-02-27T20:16:11.730 に答える