正则表达式数据格式"名字姓氏,电话号码,电子邮件"

时间:2017-10-22 20:27:48

标签: php regex

我有一个字符串即将通过表单,我不知道如何用正则表达式来处理它,正在使用的数据是这样的格式:

FirstName LastName, PhoneNumber, Emailadress

所以我想知道使用什么正则表达式来匹配字符串,如果它是这种格式。

通过表格GET方法将数据发送到搜索页面。我想检查具有正常表达的字符串,如果它匹配,请继续搜索页面。

因为用户可以在搜索框中输入不同的数据并且它不会始终采用这种格式,我想知道如何检查数据或字符串是否格式为firstname lastname,phone ...

这是一个示例url,其中提供了需要检查的数据

http://localhost/search.php?q=Martha+Marquez%2C+0637460697%2C+Morbi.quis%40pellentesque.ca

这是来自$ _GET

的原始数据
Martha Marquez, 0637460697, Morbi.quis@pellentesque.ca

我是正则表达式的新手。 提前致谢

2 个答案:

答案 0 :(得分:1)

在逗号(+空格)上拆分并使用list()解压缩您的值:

<?php
$string = "FirstName LastName, PhoneNumber, Emailadress";
list($name, $phone, $email) = preg_split('~,\s*~', $string);

echo $phone;
?>

<小时/> 要实际确保字符串是给定格式,您可以使用

^(?P<name>[^,]+),\s*(?P<phone>[^,]+),\s*(?P<email>\S+@\S+)\s*$

细分说:

^                     # start of the string
(?P<name>[^,]+),\s*   # not a comma, 1+ -> group "name"
(?P<phone>[^,]+),\s*  # not a comma, 1+ -> group "phone"
(?P<email>\S+@\S+)\s* # group "email"
$                     # end of the line

<小时/> PHP中的内容是:

<?php
$string = "Martha Marquez, 0637460697, Morbi.quis@pellentesque.ca";

$regex = '~^(?P<name>[^,]+),\s*(?P<phone>[^,]+),\s*(?P<email>\S+@\S+)\s*$~';

if (preg_match($regex, $string, $match)) {
    print_r($match);
} else {
    echo "Wrong format.";
}
?>

答案 1 :(得分:0)

您可以通过GET方法提交此数据吗?

在提交搜索后,只是为了查看网址的外观。