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:[email protected].><img src=3D.http://www.lowiecki.pl/img/list.gif=
. border=3D.0.></a></td><td class=3D.bb.><a h=ref=3D.mailto:[email protected].>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] => [email protected]
[1] => [email protected]
)
請務必致電$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 關注
- 149 瀏覽
添加回答
舉報