0

我有以下代码:

    if(isset($_POST['login'])){

    $check = $_POST['theemail'];
    if (preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $check)){ 

    echo 'Email is valid ';
    }  

    }

        <form method="post" action="" autocomplete="off"> 


    <p align="right">Email <BR><input type="text" name="theemail" size="20" /></p>
    <p align="right"><input type="submit" name="register" value="Register" /></p>
    <p align="right"><a href="index.php">register</a></p>

   </form>

此代码在用户提交表单时检查电子邮件是否采用有效格式(name@host.com),并且可以正常工作;我的问题是,当我尝试从 preg_match 获取某些内容以在提交表单时回显给用户时。

例如:用户提交了以下电子邮件:john@gmail.com

我希望用户会看到作为回报:echo' Hello john(而不是 john,它将是一个变量 $,或者会显示它的东西)。您的电子邮件的主机是:gmail.com(而不是 gmail,它将是一个变量 $ 或将显示它的东西)。

我试图在代码中的某些位置周围创建 div,以便稍后在回显中显示它们,但我没有成功。任何帮助将不胜感激!

4

1 回答 1

1

我会这样做:

<?php
if(isset($_POST['register'])){
$check = $_POST['theemail'];
if (preg_match("/^([_a-z0-9-]+(\.[_a-z0-9-]+)*)@([a-z0-9-]+(\.[a-z0-9-]+)*)(\.([a-z]{2,3}))$/", $check, $match)){ 
echo 'Hello ' . $match[1] . ' your email address domain is '. $match[3] . '.' . $match[6];
} else {
echo 'Error, you entered an invalid email address';
}
}
?>

<form method="post" action="" autocomplete="off"> 
<p align="right">Email <BR><input type="text" name="theemail" size="20" /></p>
<p align="right"><input type="submit" name="register" value="Register" /></p>
<p align="right"><a href="index.php">register</a></p>
</form>

这将输出:

你好约翰你的电子邮件地址域是 doe.com

或者,如果电子邮件地址无效:

错误,您输入的电子邮件地址无效

在所有情况下,它都会再次显示表单。

于 2012-12-31T12:29:07.620 回答