如何检查xml文件中是否存在电子邮件

时间:2014-10-11 08:13:00

标签: php html xml

我希望系统在新注册时检查xml文件中是否存在电子邮件,我该怎么办?我得到了比较所有电子邮件节点的基本想法,但仍然无法在几个小时后使其工作。谢谢你的帮助

register.html

<!DOCTYPE html>
<html lang="en">
<head>
<title>test</title>
</head>
<body>
<h1>ShipOnline System Registration Page</h1>
<form id="regform" method="post" action="register.php">
<fieldset id="person"> 
<legend>Your details:</legend>
<p><label for="fname">First Name:</label><input type="text" name="fname"/></p>
<p><label for="lname">Last Name:</label><input type="text" name="lname"/></p>
<p><label for="password">Password:</label><input type="password" name="password"/></p>
<p><label for="cpassword">Confirm Password:</label><input type="password" name="cpassword"/></p>            
<p><label for="email">Email:</label><input type="email" id="email" name="email"/></p>
<p><label for="phone">Phone:</label><input type="text" name="phone"/></p>
<input type="submit" value="Register"/>
</fieldset>
</form>
</body>
</html>

register.php的相关部分

<?php
$email = @trim($_POST["email"]);
if ($password != $cpassword)
{
    echo 'Password does not match';
}
@override
else if ($email /*exists*/)
{
    echo 'Email exists';
}
?>

customer.xml

<?xml version="1.0"?>
<customer>
<user>
    <id>0</id>
    <fname>John</fname>
    <lname>Smith</lname>
    <email>jsmith@gmail.com</email>
    <password>jsmith</password>
    <phone>0412345677</phone>
</user>
<user>
    <id>1</id>
    <fname>Arthur</fname>
    <lname>Luo</lname>
    <email>aluo@gmail.com</email>
    <password>aluo</password>
    <phone>0412345678</phone>
</user>

1 个答案:

答案 0 :(得分:1)

最简单的方法是简单搜索XML文件的内容。如果您确信在其他某些上下文中没有包含电子邮件地址的其他<email>标记,则可以。例如:

# slurp the XML file into a variable
$xml = file_get_contents('customer.xml');
# search for the email address within the tags
if (strpos($xml, "<email>$email</email>") !== false)) {
    # you've found it!
}

您还可以使用DOMDocument和DOMXPath来解析XML并搜索电子邮件地址。老实说,考虑到你发布的XML文件的简单性,这似乎有些过分了。