我是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>
现在,我想在电子邮件正确时显示一条消息,如果不正确则显示消息。我真的不知道下一步该怎么做。我已经尝试了以下,在?&gt;之前结束标签:
if (is_email($email) == true) {
echo "Right";
}
elseif (is_email($email) == false) {
echo "Wrong";
}
但这没有做任何事情。这是什么解决方案?
答案 0 :(得分: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
。
答案 1 :(得分: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";
}
}
?>
答案 2 :(得分:0)
...
if (is_email($email)) {
$valid="Right";
} else {
$valid="Wrong";
}
?>
...
<body><?php echo($valid); ?>
答案 3 :(得分:0)
我推荐filter_var,内置php。所以我认为将来会保留这个功能,而regexp功能可以改变。
此外,你可以说“这个语言的作用是假设这个功能很好,而不是我的。”
<?php
var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));