juniormra
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Кто-нибудь может подсказать в чем проблема? Значит так, возникла необходимость проверить все письма пришедшие на Return-path:<email>, с темой undelivered, ну или в роде этой и выдернуть оттуда email адреса. Использовал следующий код: preg_match_all( '/[0-9a-z\._-]{3,15}@[0-9a-z\.-]{3,32}\.[a-z]{2,4}/i', $mail, $emails ) Регулярное выражение, конечно, не идеальное, но должно было бы выдернуть все email адреса. Но работает, как-то, не стабильно - до того как среди писем были те, которые содержали точку в адресе (.), скрипт выдергивал email-ы вида - name_lastname@anything.com, blah_balh@foo.net.., т.е. те которые содержали символ подчеркивания. Не пойму в чем дело. Пытался использовать другие регулярные выражения, но безрезультатно. Может проблема заключается в чем-то другом? Добавлено: И еще, проверил, что если указать номер письма (где содержатся email-ы, которые обычно не обнаруживаются reg-ex-ом) явно, то reg-ex их обнаруживает. Вот часть кода: foreach ($mails as $mail_arr){ $mail = $pop3->pop3_retr($mail_arr[0]); preg_match_all('/[0-9a-z\._-]{3,32}@[0-9a-z\.-]+\.[a-z]{2,4}/i', $mail, $emails); } метод pop3_retr() возвращает все письмо в виде простого текста. Добавлено: Сорри, нашел проблему. Регулярка тут не причем, просто, надо было вынести preg_match_all() из цикла и проверить весь текст писем или же объединять массив $emails с другим массивом... ну или еще как-нибудь |