• ベストアンサー

メールアドレス形式チェックソースですが

<?php $mail = "php_programming@shuwasystem.co.jp"; if (!eregi("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$",$mail)) echo ("メールアドレスが誤っています!"); ?> 上記の中、\\-とか\\.などの意味がわかりません。\はエスケープなら なぜ二つ並べるのでしょうか。 そして、|の意味もわかりません。 お分かりの方、教えていただければ大変うれしいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • youki64
  • ベストアンサー率33% (3/9)
回答No.2

その正規表現中の\\-と\\.は-と.にヒットさせるものです。 なぜ2つなのかは不明です。(-はそのままで良かったと 思うのですが) ちなみに私は if (!ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $mail)) { //エラー、E-mailに全角文字や、メールアドレスとして不正な文字が入っている? } という正規表現を使ってます。

cgi_syoho
質問者

お礼

やはり、なぜ\を二つ並べる?ってあまりこだわらないことにします。 そういうふうに使うんですね。 ご紹介いただいたソースはすごくいいと思います。 参考にさせていただきますね。 この度はご指導いただき、どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#48234
noname#48234
回答No.1

まだ勉強中なので分かる範囲で。 |は論理和、つまり英語のorの意味ですね。 \¥はなぜ繰り返しなんでしょうね?私も疑問です。 PHPのeregiについてはちょっと分かりませんが、 分かる範囲で訳しますと、 $mailが (1)(小文字のaからzと0から9と_または-または.の一回以上の繰り返し) (2)@ (3)(小文字のaからzと0から9と_または-の一回以上の繰り返し)に.を付けたものの一回以上の繰り返し (4)小文字のaからzの2回以上4回以下の繰り返し の条件満たしているかeregiで調べて偽ならエラー表示。 ということだと思います。 でもこれだと、__--..@abc.co.jpでもエラーにならないかも・・・。 少々怪しいので、正規表現の達人による補足回答を待ちましょう。

cgi_syoho
質問者

お礼

|ってorの意味ですね。。。覚えてはいたと思いますが、 まったく別物に見えてしまいました。 \はそうやって二つ並べて使うって風に理解しておくしかないでしょうか。。。 この度はご指導いただきまして どうもありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メールサーバー⇒アドレス抽出

    下記のようにメールサーバーにアクセスし、アドレスを抽出しようと思ったのですが思い通りに値が帰ってきません。タイトルは正常に抽出できたのですが、アドレスはどうもうまくいきません。致命的なミスはないと思うのですがどこが間違っているのでしょうか… 宜しくお願いします。 function check_mail($login_id, $login_pwd, $host) { //戻り値生成 $ret = array(); ・・・途中省略・・・ /* 送信者アドレスの抽出 */ if (eregi("From:[ \t]*([^\r\n]+)", $head, $freg)) { $from = addr_search($freg[1]); } elseif (eregi("Reply-To:[ \t]*([^\r\n]+)", $head, $freg)) { $from = addr_search($freg[1]); } elseif (eregi("Return-Path:[ \t]*([^\r\n]+)", $head, $freg)) {  $from = addr_search($freg[1]); } */ //アドレスを格納 $ret[] = $from; 途中省略 ----------- /* メールアドレスを抽出する */ function addr_search($addr) { if (eregi("[-!#$%&\'*+\\./0-9A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+", $addr, $fromreg)) { return $fromreg[0]; } else { return false; } }

    • ベストアンサー
    • PHP
  • 複数メールアドレスのチェック

    現在、phpにてメールフォームを制作していますが、送信先に複数メールアドレスを指定した際の正規表現でチェックしたいと思っているのですが、全く分かりません。 正規表現で「preg_match("/^([a-z0-9_]|\-|\.|\+)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6}$/i",$value)」としていますが、「aaa@aa.aa,bbb@bb.bb」などカンマでメールアドレスを複数(1~5アドレスを想定)区切った場合、エラーが出てしまいます。 どのようにしたら、うまくいくか教えていただけないでしょうか? 色々と調べましたがわかりません。 大変申し訳ないですが、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • メールアドレスのチェック

    質問させてください。 メールアドレスの正当性チェックを作成してみようと思いました。 (1)"@"より左側の部分は3桁以上16桁以内 (2)使用可能文字は、英小文字,数字,'-', '.', '_' (3)先頭文字は英小文字のみ (4)先頭・末尾文字に'-', '.', '_'は使用不可 (5)数字のみ'_', '.', '-'のみのアドレスはだめ --------------------------------------- $value = "xxxxxx@****.com"; $flg = 0; $address = split("@", $value); //****(1)****// if((strlen($address[0]) > 16) || (strlen($address[0] < 3)){ $flg = 1; } if($flg == 0){ echo("このアドレスはつかます"); }else{ echo("このアドレスはつかえません"); } ------------------------------ と、チェックの(1)しかわからないのですが、 (2) ~ (5)のアドバイスを下さい。 宜しくお願い致します。

    • 締切済み
    • PHP
  • メールの特定にphpを使っているのですが、From欄のアドレスを取得す

    メールの特定にphpを使っているのですが、From欄のアドレスを取得するために、 if (eregi("From:[ \t]*([^\r\n]+)", $head, $freg)) { としていましたが、GmailやYahooメールだと、ヘッダーにDomainKey-Signatureがあり、その中のfrom:がヒットしてしまいます(Fromのメールアドレスが取得できない)。上手く取得する方法はありませんでしょうか?

    • ベストアンサー
    • PHP
  • [正規表現]メールアドレスのチェックについて

    メールアドレスのローカル部に不正な文字が使われていないかをチェックするものを作成しましたが、許可されるはずの'(シングルクォーテーション)だけがNGになってしまいます。 環境はPHP5、ソースは下記のとおりなのですがアドバイスいただけないでしょうか。 <認める文字> a-z A-Z 0-9 ! # $ % & ' * + - / = ? ^ _ ` { | } ~ <チェック部分のソース> preg_match("/^\s*[-\w._!#$%&\'*+\\/=?^`{|}~]", $add_local) <現象> テストで「!#$%&'*+-/=?^_`.{|}~」をチェックするとNG '(シングルクォーテーション)を消した同アドレスはOK

    • 締切済み
    • PHP
  • if文でチェックしている内容を教えてください

    メールアドレスをチェックしているif文ですが どんな内容をチェックしているのでしょうか? if (preg_match('/^([a-z0-9_]|\-|\.|\+)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6}$/i', $mailaddress))・・・

    • ベストアンサー
    • PHP
  • PHPでメールチェックをしたいのですが、空欄だとエラーが返されてしまいます。

    必須項目ではないので、何か入力されたときのみメールチェックをしたいのですが、 function isMailError ( $mail ) { if($mail==null) { return true; } if ( !preg_match( '/^([a-z0-9_]|\-|\.|\+)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6}$/i', $mail ) ){ return true; } else { return false; } } この設定ではうまくいきません。なぜでしょうか? ご指導よろしくお願い致します。

    • 締切済み
    • PHP
  • php初心者ですメールについて教えてください。

    ホームページのメールフォームを作ってます。 返信用メールアドレスを記入してもらうフォームで、 携帯アドレスがエラー扱いになってしまいます。 if (trim($email) == '') { $error[] = 'メールアドレスは必須項目です。'; } else { $pattern = '/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD'; if (!preg_match($pattern, $email)) { $error[] = 'メールアドレスの形式が正しくありません。'; } } という感で、yahooやgmailを入れたときには上手くいくのですが、 自分のドコモの携帯のアドレスを入れると上手くいきません。 買った本を写して書いてる感じなので、どう直していいかわかりません。 教えてください!!

    • 締切済み
    • PHP
  • PHPフォームでのメールチェックの仕方(必須項目でない場合)

    PHPでフォームを製作しています。 メールチェックの設定をいれるとメールの項目に入力しないとエラーが返されてしまいます。 メールの項目は必須項目でなく、 その項目に何か入力された場合のみメールチェックを行う設定にしたいのですが、 どのように行えばいいかわかりません。 ↓現在この設定を入れています。 アドバイスをお願い致します。 function isMailError ( $mail ) { if ( !preg_match( '/^([a-z0-9_]|\-|\.|\+)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6}$/i', $mail ) ){ return true; } else { return false; } }

    • 締切済み
    • PHP
  • 存在しないメールアドレスかどうかのチェック

    PHPのNet_SMTPにて、メール送信するプログラムを作成しています。 http://pear.php.net/manual/ja/package.networking.net-smtp.php を参照して作成しているのですが、 存在しないメールアドレスかどうかのチェックは可能でしょうか? ユーザーが誤ったメールアドレスを設定していた場合、 システムはそのメールアドレスにメール送信するのですが、 当然誤ったメールアドレスなので、ユーザーには届きません。 このような事を回避するために、 システムがメールを送信する際に、 この世に存在するアドレスかどうかチェックする術はあるのでしょうか? 返却されたメールを解析するしか無いのでしょうか… ※.アドレス内に「@」が無いなどのチェックではなく、   存在するアドレスかどうかのチェックが可能かどうかになります。

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • コロナワクチン接種後の血液検査には影響がある可能性があります。1週間前か2週間前に接種する必要があるか迷っている場合は、2週間前が適切なようです。また、検査後にワクチン接種する場合は、数日間の間隔を空けることが推奨されています。
  • コロナワクチン接種後の血液検査での影響について調べたところ、接種後は検査結果に影響が出ることが分かりました。予約が取れず検査後に接種するか、検査前に接種するか悩んでいる場合は、検査前の方が良いと言われています。ただし、副反応の期間や検査の日程など注意が必要です。
  • コロナワクチン接種後の血液検査での影響とワクチン接種のタイミングについて気になっている方へのアドバイスです。血液検査をする場合は、2週間前に接種することが推奨されています。また、検査後にワクチン接種をする場合は、数日間の間隔を空けることが良いとされています。検査前に接種するか検査後に接種するか迷っている場合は、検査前の方が安心ですが、副反応や検査日程によっては注意が必要です。
回答を見る