Заранее извиняюсь за еще один запрос соответствия шаблону электронной почты.
Вот что у меня есть:
$text = strtolower($intext);
$lines = preg_split("/[\s]*[\n][\s]*/", $text);
$pattern = '/[A-Za-z0-9_-]+@[A-Za-z0-9_-]+\.([A-Za-z0-9_-][A-Za-z0-9_]+)/';
$pattern1= '/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/';
foreach ($lines as $email) {
preg_match($pattern,$email,$goodies);
$goodies[0]=filter_var($goodies[0], FILTER_SANITIZE_EMAIL);
if(filter_var($goodies[0], FILTER_VALIDATE_EMAIL)){
array_push($good,$goodies[0]);
}
}
$ Pattern работает нормально, но адреса .rr.com (и другие проблемы, я уверен) лишены .com
$ pattern1 получает только те письма, которые находятся на одной линии.
Я вставляю целую страницу разнородного текста в текстовую область, содержащую некоторые электронные письма из старого файла данных, который я пытаюсь восстановить.
Все отлично работает, за исключением писем с более чем одним "." или до или после "@".
Я уверен, что должно быть и больше проблем.
Я пробовал несколько шаблонов, которые я нашел, а также несколько, которые я пытался написать.
Может кто-нибудь показать мне свет здесь, прежде чем я вытащу оставшиеся волосы?