【发布时间】:2018-04-22 19:56:44
【问题描述】:
我在问是否有更好的方法来确定输入的字符串是电话号码还是电子邮件,这是我已经工作的代码
public function InviteFriend($invitation)
{
// Initialize Connection
$conn = $this->conn;
// Check what type of Invitation it is
if (preg_match_all('~\b\d[- /\d]*\d\b~', $invitation, $res) > 0) {
$type = 'phone';
} else if (preg_match_all('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i', $invitation, $res) > 0) {
$type = 'email';
}
echo $type;
}
但我担心的是,如果用户在同一个字符串中同时输入电话和电子邮件,会选择哪个 if 语句,哪个会被忽略?我是确定哪种类型的字符串合适还是有更有效的方法? 谢谢
【问题讨论】:
-
应该是电话号码还是电子邮件?
-
是的,它必须@revo
-
请看一下这些网站:TLD 列表:iana.org/domains/root/db;有效/无效地址:en.wikipedia.org/wiki/Email_address#Examples; RFC822 电子邮件地址的正则表达式:ex-parrot.com/~pdw/Mail-RFC822-Address.html
标签: php regex preg-match