使用preg_match进行解析

时间:2012-12-30 23:00:52

标签: php if-statement preg-match

我有以下代码:

    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,以便稍后在echo中显示它们,但我没有成功。任何帮助都会得到满足!

1 个答案:

答案 0 :(得分: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>

这将输出:

  

您好john您的电子邮件地址域是doe.com

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

  

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

在所有情况下,它会再次显示该表格。