Php 使用函数验证电子邮件地址

Php 使用函数验证电子邮件地址,php,Php,我不熟悉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))

我不熟悉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)) {
    $valid="Right";
} else {
    $valid="Wrong";
}
?>



您确定正则表达式正确吗?我修改了它,我能够让代码正常工作

<?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";
    }
}
?>

您确定正则表达式正确吗?我修改了它,我能够让代码正常工作

<?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";
    }
}
?>

我们无法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!';
}

我在这里使用的方法是。

我们不能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!';
}
我在这里使用的方法是一个.

我推荐的内置php。所以我认为这个函数将来会保留,而regexp函数可以改变

此外,你可以说“这是语言的作用,假设这个函数工作良好,而不是我的”

我推荐,内置php。所以我认为这个函数将来会保留,而regexp函数可以改变

此外,你可以说“这是语言的作用,假设这个函数工作良好,而不是我的”



对不起,这样的问题很难回答。有相当多的细节缺失,我们不知道你的真实设置。我建议你试着弄清楚发生了什么事。这并不难,它将帮助您了解php脚本如何在web环境中工作。试试这个:当你点击提交按钮时,会发生什么?一步接一步。尝试通过将调试输出添加到日志文件中来显示每个步骤。您是对验证电子邮件地址有疑问,还是对PHP中的打印变量有疑问?否,更多如何显示电子邮件的格式是否正确正则表达式末尾的%看起来可疑,无论如何,我宁愿看到$thereforry,这样的问题很难回答。有相当多的细节缺失,我们不知道你的真实设置。我建议你试着弄清楚发生了什么事。这并不难,它将帮助您了解php脚本如何在web环境中工作。试试这个:当你点击提交按钮时,会发生什么?一步接一步。最好通过将调试输出添加到日志文件中来显示每个步骤。您是对验证电子邮件地址有疑问,还是对来自PHP的打印变量有疑问?否,更多如何显示电子邮件的格式是否正确正则表达式末尾的%看起来可疑,无论如何,我宁愿看到$there@B.S.嘿,想帮忙,没有太多线索,无论如何,如果您不希望它出现在
之前,那么这是正确的编写方法。谢谢你的否决票!现在你自己解决吧,否决票是我的。请再次查看您的代码。您正在两次执行
is\u email
功能,并期望得到不同的结果。。。如果电子邮件有效,该函数将返回
true
两次。。。请在发布代码之前花时间测试代码。如果您没有时间测试它,请声明它是未测试的代码。此代码完全错误…@Lix好的,对不起你是对的,只是做了一些复制粘贴quick@B.S.嘿,尝试帮助,没有很多线索,无论如何,如果你不希望它出现在
之前,这是正确的写作方式。谢谢你的否决票!现在你自己解决吧,否决票是我的。请再次查看您的代码。您正在两次执行
is\u email
功能,并期望得到不同的结果。。。如果电子邮件有效,该函数将返回
true
两次。。。请在发布代码之前花时间测试代码。如果您没有时间测试它,请声明它是未测试的代码。这段代码完全错了…@Lix好的,对不起你是对的,只是做了一些复制粘贴太快了谢谢,这很有效。奇怪,因为我使用的正则表达式直接来自我使用的示例。谢谢,这很有效。奇怪,因为我使用的正则表达式直接来自我使用的示例。这是一个更好的示例。不过我编辑了if声明。它是if(validate($email)),但它应该是if(validateEmail($email));)谢谢。@b.s-真的。我的错误。。。谢谢你的反馈!如果存在本机方法(如本例所示),我总是更喜欢它。这是一个更好的例子。不过我编辑了if声明。它是if(validate($email)),但它应该是if(validateEmail($email));)谢谢。@b.s-真的。我的错误。。。谢谢你的反馈!如果存在本机方法(如本例所示),我总是更喜欢它。
<?php
var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));