адреса электронной почты могут быть намного сложнее, чем формы, к которым мы привыкли, см. примеры необычных действительных адресов .
Почти идеальное, но очень сложное регулярное выражение для сопоставление большинства форм адресов электронной почты предлагается по адресу https://emailregex.com/.
Вы можете использовать это более короткое, но более ограничительное выражение, полученное из выражения, предложенного Яном Гойвертсом по адресу 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 это может быть реализовано следующим образом:
<code><?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).'
':' Адрес не найден. '; ?>
Этот скрипт выводит:
Array
(
[0] => rys@adres.pl
[1] => second-address@example.com
)
Обязательно позвоните по номеру $matches[0]
, чтобы получить найденные адреса.
С уважением