2014-01-14 2 views
0

의 유효성을 확인 I는 다음과 같이 이메일 주소를 입력하는 입력 필드가 : 나는 사용자가 전자 메일 주소를 제출하면이의 유효성을 검사 할이메일 형식 HTML 입력

<input type="email" name="email" id="email" title="E-mail(Format: [email protected])"> 

. 그래서이 코드를 사용했습니다 :

<?php 
$email =($_POST['email']); 
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) 
{ 
echo "E-mail is not valid"; 
} 
else 
{ 
echo "E-mail is valid"; }? > 

그러나 'someone @ example'으로 이메일을 입력해도 'email is valid'가 인쇄됩니다. '[email protected]'형식으로 전자 메일의 유효성을 검사하려면 어떻게해야합니까? 즉, '@'및 '.com'형식 및 필요성을 의미합니까?

+1

[** ** 정말 (http://codepad.org/yCkItJxz) ?? – Rikesh

+0

: 이메일은 유효하지만 브라우저에는 O가 인쇄되어 있습니다! –

+0

당신이 완전히 끝내주는 해결책을 가지고있을 때 당신은 무엇을 원합니까? – Abhishek

답변

0

나는이 기능을 본적 Nette 프레임 워크 및 이메일 확인 필자에 대한 최적의 기능에서

public static function isEmail($value) 
    { 
    $atom = "[-a-z0-9!#$%&'*+/=?^_`{|}~]"; // RFC 5322 unquoted characters in local-part 
    $localPart = "(?:\"(?:[ !\\x23-\\x5B\\x5D-\\x7E]*|\\\\[ -~])+\"|$atom+(?:\\.$atom+)*)"; // quoted or unquoted 
    $alpha = "a-z\x80-\xFF"; // superset of IDN 
    $domain = "[0-9$alpha](?:[-0-9$alpha]{0,61}[0-9$alpha])?"; // RFC 1034 one domain component 
    $topDomain = "[$alpha](?:[-0-9$alpha]{0,17}[$alpha])?"; 
    return (bool) preg_match("(^[email protected](?:$domain\\.)+$topDomain\\z)i", $value); 
} 

그것의 사용을 권장합니다.

https://github.com/nette/nette/blob/master/Nette/Utils/Validators.php

+0

이것은 해결책이 아닙니다. – Abhishek

+0

입니다. 하지만 분명히 조금 더 나은 다음 filter_var :) –