PHPでメールアドレスを検証する方法!正規表現とfilter_var()の使い方を徹底解説
この記事では、PHPの正規表現を使ってメールアドレスを検証(バリデーション)する方法について詳しく解説します。フォームからの入力チェックなどで必須となるメールアドレスの妥当性確認には、主に2つの方法があります。それぞれのコード例とともに見ていきましょう。
方法1:preg_match()関数と正規表現を使う
preg_match()関数は、正規表現パターンを使用して入力文字列が指定の形式に一致するかどうかをチェックする関数です。独自のルールで厳密にメールアドレスの形式を判定したい場合に有効な方法です。
コード例
<?php
function checkemail($str) {
return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
}
if(!checkemail("alex@tutorialspoint.com")){
echo "無効なメールアドレスです。";
}
else{
echo "有効なメールアドレスです。";
}
?>
出力結果
有効なメールアドレスです。
上記の例では、PHPのpreg_match()関数を使って文字列内から正規表現パターンに一致する部分を検索しています。さらに、PHPの三項演算子(条件演算子)を組み合わせることで、preg_match()の戻り値に応じてTRUEまたはFALSEを返すシンプルな構造になっています。
使用している正規表現パターンの意味は以下の通りです。
- ^([a-z0-9\+_\-]+):ローカル部の先頭は英小文字・数字・記号(+ _ -)で構成される
- (\.[a-z0-9\+_\-]+)*:ドット区切りの文字列が0回以上繰り返される
- @([a-z0-9\-]+\.)+:「@」以降はドメイン名とドットが1回以上繰り返される
- [a-z]{2,6}$:末尾は2〜6文字のTLD(トップレベルドメイン)で終わる
方法2:filter_var()関数を使う(推奨)
次に、filter_var()メソッドを使用したメールアドレスの検証方法を紹介します。この方法では、PHPに組み込まれたFILTER_VALIDATE_EMAILフィルタを利用するため、複雑な正規表現を自分で書く必要がなく、より簡潔かつ安全にバリデーションを行えます。実務ではこちらの方法が推奨されます。
コード例
<?php
$email = "pattrick@tutorialspoint.com";
// メールアドレスの検証
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo("$email は有効なメールアドレスです");
}
else{
echo("$email は無効なメールアドレスです");
}
?>
出力結果
pattrick@tutorialspoint.com は有効なメールアドレスです
filter_var()は、検証が成功した場合はメールアドレスそのものを、失敗した場合はfalseを返します。if文の条件式として直接使えるため、コードが非常に読みやすくなります。
まとめ
PHPでメールアドレスを検証する方法として、正規表現とpreg_match()を使う方法と、filter_var()のFILTER_VALIDATE_EMAILを使う方法の2つを紹介しました。独自の細かいルールが必要な場合は正規表現、一般的な検証であればfilter_var()を選ぶのが良いでしょう。状況に応じて使い分けることで、堅牢なフォームバリデーションを実装できます。
-
スパマーはどうやってあなたのメールアドレスを突き止めるのか?知っておくべき5つの手法
スパムは、インターネット上における「疫病」とも呼べる存在です。誰であっても、いつか必ずスパムの標的となり、その厄介な被害に悩まされることになります。人々は何十年もの間スパムとの戦いを続けてきましたが、それでも今なお勢力は衰えていません。では、そもそもスパマーはどのようにしてあなたを見つけ出すのでしょうか? スパムの主な配信手段はメールです。論理的に考えれば、「スパマーにメールアドレスさえ知られなければ被害には遭わない」と思うかもしれません。しかし、現実はそう単純ではありません。スパマーたちは長年の試行錯誤の中で手法を洗練させており、実にさまざまな方法でメールアドレスを手に入れられるのです。 知
-
一時的なメールアドレスを作成する方法|Apple「メールを非公開」機能の使い方
「Bccアドレスフィールドを表示」を選ぶか、Option(Alt)+Command+Bを押すだけでBcc欄が表示されます。これで、他に誰へ送信したかが相手に知られない安心感が得られます。 しかし、今多くの人が知りたいのはおそらくそれではありません。現代のメールにおける最大の問題は、メールアドレスが悪意ある第三者の手に渡り、気づけば受信箱がスパムでいっぱいになっていることです。 受信箱に届くスパムやフィッシングメールを減らす最善の方法は、企業にむやみに自分のメールアドレスを渡さないことです。そうすることで、アドレスが流出・売却されたり、不正利用されたりするリスクを大幅に減らせます。 一時的なメー