programing

문자열이 PHP의 이메일 주소인지 확인합니다.

newsource 2022. 9. 25. 00:25

문자열이 PHP의 이메일 주소인지 확인합니다.

SQL 쿼리를 하려고 하는데 값이 이메일 주소인지 확인해야 합니다.확인 방법이 필요합니다.$user이메일 주소입니다.테이블에 이런 사용자 값이 있기 때문입니다.

test
test2
test@example.com
test2@example.com
test392
test@example.net

기타 등등...

그렇게 해야겠다.$useremail체크$user이메일 주소인지 아닌지를 확인합니다.값을 갱신할 수 있도록WHERE user=test OR user=test@example.com,기타.

$user = strtolower($olduser);
$useremail = "";

mysql_query("UPDATE _$setprofile SET user=$sn, fc=$fc WHERE user='$user' OR user='$useremail");

정규식이 없는 경우:

<?php
    if(filter_var("some@address.com", FILTER_VALIDATE_EMAIL)) {
        // valid address
    }
    else {
        // invalid address
    }
?>
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo 'This is a valid email address.';
    echo filter_var($email, FILTER_VALIDATE_EMAIL);
    // exit("E-mail is not valid");
}
else {
    echo 'Invalid email address.';
} 

이는 좋은 방법이 아니며 이메일이 존재하는지 확인하지 않지만 @ 및 도메인 확장자를 가진 이메일인지 확인합니다.

function checkEmail($email) {
   $find1 = strpos($email, '@');
   $find2 = strpos($email, '.');
   return ($find1 !== false && $find2 !== false && $find2 > $find1);
}

$email = 'name@email.com';
if ( checkEmail($email) ) {
   echo $email . ' looks like a valid email address.';
}

가장 간단한 방법은 정규 표현을 사용하여 전자 메일 주소를 확인하는 것입니다. 그러나 얼마나 정확할 수 있는지에 대해서는 이견이 있습니다.이 프로세스에 대해서는, 이하에 자세하게 설명하겠습니다.

정규식을 사용하여 전자 메일 주소 확인

MySQL에서 REGEXP를 사용하여 정규 표현에 따라 데이터베이스에서 선택할 수 있습니다.

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

is_email() 함수는 문자열이 유효한 이메일 주소인지 아닌지에 대한 명확한 답변을 제공합니다.제가 아는 한, 다른 어떤 솔루션도 동일한 수준의 권한을 가지고는 이 작업을 수행할 수 없습니다.

내가 예시를 제대로 이해한다면, 너는 이것을 이렇게 사용할 것이다.

$user = strtolower($olduser);
$useremail = (is_email($user)) ? $user : '';

PHP 기본 제공 함수가 불완전합니다.나는 의 주요 저자이다.is_email()그래서 제가 트럼펫을 불긴 했지만 다른 누구도 다시는 그러지 못하게 하려고 많은 노력을 기울였어요

정규 표현을 사용하여 입력 문자열이 전자 메일 주소와 일치하는지 확인할 수 있습니다.

<?php 
$email = "someone@example.com"; 
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { 
  echo "Valid email address."; 
} 
else { 
  echo "Invalid email address."; 
} 
?>

송신원: http://www.totallyphp.co.uk/code/validate_an_email_address_using_regular_expressions.htm

편집: 더 정확한 표현은 이 질문에 대한 Travis의 답변을 참조하십시오.

저는 수백 개의 사이트에서 이 기능을 오랫동안 사용해 왔습니다.완벽하지는 않지만, 잘못된 부정(또는 긍정)에 대해 불평해 본 적은 없습니다.

function validate_email($email) {
    return (preg_match("/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/", $email) || !preg_match("/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/", $email)) ? false : true;
}

모두가 정규 표현을 올리고 있기 때문에, 저는 다음과 같이 하겠습니다.^((([\w+-]+)(.[\w+-]+)*)|(\"[^(\|\")]{0,62}\"))@(([a-zA-Z0-9-]+.)+([a-zA-Z0-9]{2,})|[?([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})(.([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})){3}]?)$

제가 아는 한, RFC 사양의 모든 것을 지원하고 있습니다.대부분의 유저가 포함하지 않는 내용도 다수 포함되어 있습니다.

대부분의 경우 이용 가능한 TLD를 모두 지원하지 않는 모든 regex 제안(예:.info ★★★★★★★★★★★★★★★★★」.museum의 결정' URL을 [a-z] ★★★★★★★★★★★★★★★★★」\wfail는 다음 경우입니다.

([^.@]+)(\.[^.@]+)*@([^.@]+\.)+([^.@]+)

, ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.WHERE user=test OR user=test@example.com에러가 발생하기 쉽습니다.에서 자동 하여 "PK"에서 사용하는 이 좋습니다.WHERE절을 클릭합니다.

RFCxxx 사양에 부합하는 엄격하고 길고 읽을 수 없는 메일 주소의 값은 잘 모르겠습니다.가장 좋은 방법은 액티베이션키가 있는 링크가 포함된 메일을 최종 사용자에게 전송하여 메일 주소를 확인하는 것입니다.그것도 폼으로 알려주세요.필요한 경우 사용자가 암호와 마찬가지로 전자 메일 주소를 두 번 입력합니다.

$email = "email@string.com";

function isEmail($email) {
     if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
          return true
     } else {
          return false
     }
}

if (isEmail($user_email)) {
     // email is valid, run the query
     mysql_query("UPDATE _$setprofile SET user=$sn, fc=$fc WHERE user='$user' OR user='$user_email");
}
$user_email = "email@gmailcom";

function isEmail($email) {
     if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
          return true;
     } else {
          return false;
     }
}

if (isEmail($user_email)) {
     // email is ok!
} else {
     // email not ok
}

언급URL : https://stackoverflow.com/questions/1725907/check-if-a-string-is-an-email-address-in-php