Вот что у меня есть на данный момент:
Код: Выделить всё
$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]);
}
}
$pattern1 захватывает только те электронные письма, которые находятся в отдельной строке.
Я вставляю целую страницу разного текста в текстовую область, содержащую несколько писем из старый файл данных, который я пытаюсь восстановить.
Все работает отлично, за исключением писем с более чем одним знаком "." либо до, либо после "@".
Я уверен, что здесь должно быть и больше проблем.
Я попробовал несколько узоров, которые нашел, а также некоторые, которые пытался написать.
Может ли кто-нибудь показать мне свет, прежде чем я выдерну оставшиеся волосы?
Подробнее здесь: https://stackoverflow.com/questions/369 ... -misc-data
Мобильная версия