>  기사  >  백엔드 개발  >  PHP에는 이메일 주소가 존재하는지 확인하는 자체 방법이 있다는 것을 알고 계셨습니까?

PHP에는 이메일 주소가 존재하는지 확인하는 자체 방법이 있다는 것을 알고 계셨습니까?

怪我咯
怪我咯원래의
2017-07-16 09:53:122943검색

PHP에서 이메일 주소를 확인하는 방법은 여러 가지가 있습니다. 가장 일반적으로 사용되는 방법은 정규 표현식이지만, PHP에는 이메일 주소를 확인할 수 있는 방법이 내장되어 있습니다. . 살펴보겠습니다. See

My PHP에는 확인 방법이 제공됩니다.

filter_var

filter_var은 PHP에 내장된 변수 필터링 방법입니다. 정수, 부동 소수점 숫자, 이메일, URL, MAC 주소 등을 확인하는 데 사용할 수 있는 다양한 실용적인 filters를 제공합니다.

filter_var가 false를 반환하면

$email = "lastchiliarch@163.com";
 
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
 
 
$email = "asb";
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
 
$email = "1@a.com";
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));

출력:

string(21) "lastchiliarch@163.com"
bool(false)
string(7) 1@a.com

asb와 같은 불법 이메일 형식의 경우 false를 반환하지만, 1@a.com의 경우 통과하며 여전히 약간의 결함이 있습니다.

그러나 일반적인 규칙을 통과하면 1@a.com이 합법적인 이메일 주소로 간주됩니다. 그렇다면 이를 더 정확하게 확인할 수 있는 방법이 있을까요?

checkdnsrr

checkdnsrr은 실제로 지정된 호스트의 DNS 레코드를 쿼리하는 데 사용되며 사서함이 존재하는지 확인할 수 있습니다.

1@a.com의 경우 MX 레코드가 확실히 존재하지 않습니다.

$email = "lastchiliarch@163.com";
  var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));
  $email = "1@a.com";
  var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));

출력:

  bool(true)
  bool(false)

완벽하다는 것을 알 수 있습니다. 유일한 단점은 결국 네트워크 요청이라는 것입니다. 따라서 이 방법을 사용하여 동시에 많은 수의 사서함을 확인하는 것은 적합하지 않습니다.

filter_var+checkdnsrr

확인을 위해 filter_var와 checkdnsrr을 결합할 수 있습니다. 대부분의 불법 메일함은 filter_var를 사용하면 확실히 실패하며 나머지는

checkdnsrr을 사용하여 추가로 판단할 수 있습니다.

$email_arr = array("lastchiliarch@163.com", "1@a.com");
  foreach($email_arr as $email) {
    if (filter_var($email) === false) {
      echo "invalid email: $email \n";
      continue;
    }
 
    if(checkdnsrr(array_pop(explode("@",$email)),"MX") === false) {
      echo "invalid email: $email \n";
      continue;
    }
  }

출력:

invalid email: 1@a.com

하지만 주의할 점은 MX 레코드만 확인하는 것이므로 163.com이 존재한다고 판단할 수 있을 뿐이지 사용자 lastchiliarch가 존재한다는 의미는 아닙니다.

메일함의 존재를 보다 정확하게 확인하려면 SMTP 서버에 연결해서만 확인할 수 있습니다.

이메일, URL, IP가 합법적인지 확인하는 PHP 고유의 방법인 이메일 확인을 소개합니다.

주로 filter_var 함수를 사용합니다.

Syntax
filter_var(변수, 필터, 옵션)
변수가 필요합니다. 필터링할 변수를 지정합니다.
필터는 선택사항입니다. 사용할 필터의 ID를 지정합니다.
options는 플래그/옵션을 포함하는 배열을 지정합니다. 각 필터에 대해 가능한 플래그와 옵션을 확인하세요.

PHP 필터

예제 #1 filter_var() 예

<?php

var_dump(filter_var(&#39;bob@example.com&#39;, FILTER_VALIDATE_EMAIL));

var_dump(filter_var(&#39;http://example.com&#39;, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));

?>

위 루틴은 다음을 출력합니다:

string(15) "bob@example.com"
bool(false)

위 내용은 PHP에는 이메일 주소가 존재하는지 확인하는 자체 방법이 있다는 것을 알고 계셨습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.