0

PHPのカスタム関数は初めてです。電子メールアドレスを検証するために、本から次の関数を使用しています。

<?php

$email = $_POST['email'];

function is_email($email) {
// Checks for proper email format
    if (!preg_match('/^[A-Za-z0-9!#$%&\'*+-/=?ˆ_`{|}~]+@[A-Za-z0-9]+(\.[A-Za-z0-9]+)+[A-Za-z]%/', $email)) 
    {
        return false;
    } 
    else 
    {
       return true;
    }
}

?>

<!DOCTYPE html>
<html>
<head>
<title>Validate Email</title>
</head>
<body>

    <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
    Email<input type="text" name="email"></input>
    <input type="submit" value="Send">
    </form>

</body>
</html>

ここで、メールが正しければメッセージを表示し、正しくない場合はメッセージを表示したいと考えています。次に何をすればよいのか、よくわかりません。?> 終了タグの前に、次のことを既に試しました。

if (is_email($email) == true) {
    echo "Right";
}
elseif (is_email($email) == false) {
    echo "Wrong";
}

しかし、これは何もしません。これに対する解決策は何ですか?

4

4 に答える 4

2

ここで問題の原因が正確に何であるかは 100% わかりませんが、カスタム関数内で電子メールを検証する別の方法を提供させてください. メールを検証するためのネイティブ PHP メソッドが既に存在するため、一からやり直す必要はありません。

function validateEmail($email){
  return filter_var($email, FILTER_VALIDATE_EMAIL);
}

$email = $_POST['email'];
if (validateEmail($email)){
  echo 'Valid email!';
}else{
  echo 'Email NOT valid!';
}

filter_var()ここでメソッドを使用していFILTER_VALIDATE_EMAILます。

于 2012-12-04T18:27:29.133 に答える
1

あなたの正規表現は正しいですか?私はそれを修正し、コードを機能させることができました。

<?php

function is_email($email) {
    // Checks for proper email format

    if (!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/", $email)) {
        return false;
    } else {
        return true;
    }
}

if (isset($_POST['email'])) {
    $email = $_POST['email'];
    if (is_email($email) == true) {
        echo "Right";
    } elseif (is_email($email) == false) {
        echo "Wrong";
    }
}
?>
于 2012-12-04T18:25:25.430 に答える
0

..。

if (is_email($email)) {
    $valid="Right";
} else {
    $valid="Wrong";
}
?>

..。

<body><?php echo($valid); ?>
于 2012-12-04T18:20:05.580 に答える
0

組み込みの php であるfilter_varをお勧めします。したがって、この関数は将来も保持されると思いますが、たとえば正規表現関数は変更される可能性があります。

さらに、「この機能がうまく機能すると仮定するのは言語の役割であり、私のものではありません」と言えます。

<?php
var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));
于 2012-12-04T18:28:18.053 に答える