70

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");
4

11 に答える 11

254

正規表現なし:

<?php
    if(filter_var("some@address.com", FILTER_VALIDATE_EMAIL)) {
        // valid address
    }
    else {
        // invalid address
    }
?>
于 2009-11-12T22:45:41.963 に答える
11

これは優れた方法ではなく、電子メールが存在するかどうかはチェックしませんが、@とドメイン拡張子が付いた電子メールのように見えるかどうかはチェックします。

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.';
}
于 2013-08-04T00:15:56.920 に答える
10
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.';
} 
于 2013-04-07T13:03:24.237 に答える
8

最も簡単なアプローチは、正規表現を使用して電子メールアドレスをチェックすることですが、これがどれほど正確であるかについては意見の相違があります。このプロセスについては、ここで詳しく説明します。

正規表現を使用して電子メールアドレスを検証する

MySQLでREGEXPを使用して、正規表現に基づいてデータベースから選択できます。

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

于 2009-11-12T22:42:30.343 に答える
6

この関数is_email()は、文字列が有効な電子メールアドレスであるかどうかに対する明確な回答を提供します。私の知る限り、同じレベルの権限でこれを行うソリューションは他にありません。

私が例を正しく理解しているなら、あなたはそれをこのように使うでしょう

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

PHPの組み込み関数は不完全です。私は筆頭著者なis_email()ので、ここで自分のトランペットを吹いていますが、他の誰もが二度とやらなくて済むように、これに多くの努力を払っています。

于 2010-09-13T11:25:05.303 に答える
4

正規表現を使用して入力文字列を検証し、それが電子メールアドレスと一致するかどうかを確認できます。

<?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の回答を参照してください

于 2009-11-12T22:42:43.130 に答える
3

私は何百ものサイトでこの機能を長年使用しています。それはおそらく完璧ではありませんが、私は偽陰性(または陽性)の苦情を一度も受けたことがありません:

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;
}
于 2009-11-12T22:49:16.823 に答える
3

利用可能なすべてのTLD(たとえば.infoとを含む)をほとんどサポートしていないすべての正規表現の提案と、次のより一般的な正規表現で十分な.museumURLで中国語とアラビア語を許可するという今後のICANNの決定は別として[a-z]\w

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

また、aを実行するWHERE user=test OR user=test@example.comとエラーが発生しやすくなります。テーブルで自動生成されたPKを使用し、WHERE句で使用することをお勧めします。

RFCxxxx仕様に準拠した、厳密で長くて読めないmailregexesの値は実際にはわかりません。最善の方法は、アクティベーションキーを含むリンクを含むメールをエンドユーザーに送信して、メールアドレスを確認させることです。フォームでもそのことを知らせてください。必要に応じて、パスワードの場合と同じように、ユーザーにメールアドレスを2回入力させます。

于 2009-11-12T22:54:04.540 に答える
3

誰もが正規表現を投稿しているので、ここに私のものがあります: ^((([\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仕様のすべてをサポートしています。

于 2009-11-12T22:54:58.503 に答える
2
$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");
}
于 2009-11-12T22:46:15.237 に答える
0
$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
}
于 2017-08-23T19:40:17.260 に答える