nazolabo

フリーランスのWebエンジニアが近況や思ったことを発信しています。

PHPで正しいメールアドレスを調べる方法

いくつか実装での「正しいメールアドレス」を調べてみました。

http://catbot.net/blog/2007/06/re_php.html

rhacoも入れてあげて!多分そんなに変わらないけど!
というわけでrhacoは以下のようになっています。(lang/Validate.phpより)

	/**
	 * Emailアドレスとして妥当か
	 *
	 * @param unknown_type $email
	 * @return boolean
	 */
	function isEmail($email){
		/***
		 * assert(Validate::isEmail("aaaaaaa.aaaaaaaaa.a@s.sss.cd"));
		 * assert(Validate::isEmail("aaaaaaa.aaaaaaaaa.a@sss.cd"));
		 * assert(!Validate::isEmail("aaaaaaa.aaaaaaaaa.a@ss.cd"));
		 * assert(Validate::isEmail("aaaaaaa.aaaaaaaaa.a@s.sss.sss.cd"));
		 * assert(Validate::isEmail("aaaaaaa.aaaaaaaaa.@s.sss.sss.cd"));
		 */
		if(preg_match("/^[\x01-\x7F]+@(?:[A-Z0-9-]+\.)*(?:[A-Z0-9-][A-Z0-9-][A-Z0-9-]+\.)+[A-Z]{2,6}$/i",$email) && strlen($email) <= 255){
			return true;
		 }
		 return false;
	}

携帯のメールアドレスって変なの多いから適度にゆるく判定したほうがいいと思うなー。symfonyの判定ロジックはそのへん大丈夫なのかな。
ところでlang.Variableとlang.Validateって似てるよね!