2 回答
TA贡献1796条经验 获得超7个赞
电子邮件地址可能比我们习惯的形式复杂得多,请参阅不常见的有效地址示例。
在https://emailregex.com/上提出了一个几乎完美但非常复杂的正则表达式,用于匹配大多数电子邮件地址形式。
您可以使用这个更短但更具限制性的表达式,该表达式源自 Jan Goyvaerts 在https://www.regular-expressions.info/email.html上提出的一个表达式:/\b[A-Z0-9][A-Z0-9._%+-]{0,63}@(?:[A-Z0-9-]{1,63}\.){1,125}[A-Z]{2,63}\b/i
在 PHP 脚本中,可以这样实现:
<?php
$str = "<a h=ref=3D.mailto:rys@adres.pl.><img src=3D.http://www.lowiecki.pl/img/list.gif=
. border=3D.0.></a></td><td class=3D.bb.><a h=ref=3D.mailto:second-address@example.com.>foo</a>";
preg_match_all(
'/\b[A-Z0-9][A-Z0-9._%+-]{0,63}@(?:[A-Z0-9-]{1,63}\.){1,125}[A-Z]{2,63}\b/i', # After https://www.regular-expressions.info/email.html
quoted_printable_decode($str), # An e-mail address may be corrupted by the quoted-printable encoding.
$matches
);
echo isset($matches[0]) ? '<pre>'.print_r($matches[0], true).'</pre>' : 'No address found.';
?>
该脚本输出:
Array
(
[0] => rys@adres.pl
[1] => second-address@example.com
)
请务必致电$matches[0]以获取找到的地址。
TA贡献1865条经验 获得超7个赞
接下来的代码将搜索一封电子邮件并将其保存到一个变量中,之后您可以根据需要使用结果。
$email = preg_match_all(
"/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i",
$str,
$listofemails
);
if($email) {
echo "you got a match";
}
- 2 回答
- 0 关注
- 112 浏览
添加回答
举报