5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【PHP】メール形式チェックの手段

Last updated at Posted at 2018-02-08

複数メールアドレスを格納している配列に、個々メールアドレスのチェックを例として説明します。

CakePHPのデータバリデーションによるメールチェック

sample1
/**
* 厳密なチェック1 
*   無効パターン:
*     @の前にドットがある(.@)
*     ドットが連続している(…)
*     
* ※回避方法はページ下部の[CakeEmailのメールアドレスチェックを回避する]にご参考
*  
*/
use Cake\Validation\Validator;
use Cake\Validation\Validation;

$validator = new Validator ();
$validator
->allowEmpty ( 'mails' )
->add ( 'mails', [
	'mail' => [
		'rule' => function ($value, $context) {
			foreach ( $value as $mail ) {
				if (Validation::email ( $mail ) == false) {
					return false;
				}
				return true;
			},
		'message' => 'メールアドレス形式不正。'
	],
] );


PHPのフィルターによるメールチェック

sample2
/**
* 厳密なチェック2 
* 
*   e-mail アドレスが RFC 822 に沿った形式であるかどうかを確かめます。
*   ただし、
*     コメント、空白の折り返しおよび ドットなしドメイン名には対応していません。
*     [参考](http://php.net/manual/ja/filter.filters.validate.php)
*/

use Cake\Validation\Validator;

$validator = new Validator ();
$validator
->allowEmpty ( 'mails' )
->add ( 'mails', [
	'mail' => [
		'rule' => function ($value, $context) {
			foreach ( $value as $mail ) {
				if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) { // RFC 822 形式基準
					return false;
				}
				return true;
			},
		'message' => 'メールアドレス形式不正。'
	],
] );

PHPの正規表現によるメールチェック

ある程度のかなり緩めのチェックをほしいとしたら、正規表現という手段にもあります。

sample3
/**
* 緩めのチェック3 
* 
*   e-mail アドレスが「半角文字(記号混在可)@半角文字(記号混在可)」というような形式であるかどうか。
*   
*/

use Cake\Validation\Validator;
$validator = new Validator ();
$validator
->allowEmpty ( 'mails' )
->add ( 'mails', [
	'mail' => [
		'rule' => function ($value, $context) {
			foreach ( $value as $mail ) {
				if (! preg_match ( '/^[!-~]+@[!-~]+$/', $mail )) { // 形式:半角文字(記号混在可)@半角文字(記号混在可)
					return false;
					}
				}
				return true;
			},
		'message' => 'メールアドレス形式不正。'
	],
] );

参考
PHP-検証フィルタ
メールアドレスのバリデートはどっちが正しいの?
CakeEmailのメールアドレスチェックを回避する

---I Love PHP (。・ω・。)ノ♡

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?