PHP preg_match результат - PullRequest
       10

PHP preg_match результат

1 голос
/ 01 декабря 2010

Эта функция PHP работает нормально:

if (preg_match ("/<(\S+@\S+\w)>.*\n?.*55[0-9]/i",$body,$match)) {
echo "found!";
}

в

This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

xxx@hotmail.com
SMTP error from remote mail server after RCPT TO:<xxx@hotmail.com>:
host mx3.hotmail.com [65.54.188.72]: 550 Requested action not taken:
mailbox unavailable

Но если я использую ту же функцию php в этом случае:

A message that you sent could not be delivered to one or more of its 
recipients. This is a permanent error. The following address(es) failed:

xxx@yahoo.com
SMTP error from remote mail server after end of data:
host d.mx.mail.yahoo.com [209.191.88.254]: 554 delivery error:
dd This user doesn't have a yahoo.com account (xxxd@yahoo.com) [0] -  mta1010.mail.mud.yahoo.com

Функция preg_match не дает никаких результатов. Что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 01 декабря 2010

Вы в основном ищете адрес электронной почты, заключенный в < и >.

Ваш первый вход имеет, но второй ввод не имеет: У него нет идентификатора электронной почты в < >, следовательно,не получить совпадение.

Редактировать: (после вашего комментария):

При просмотре 2 предоставленных вами примеров, идентификатор электронной почты появляется между строкой failed: и кодом ошибки, начинающимся сс 55.Для этого вы можете использовать preg_match:

if(preg_match('/failed:.*?(\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b).*55[\d]/is',$str,$m)) {
       echo "Bounced email ".$m[1]."\n";
}

Идеальная ссылка

0 голосов
/ 01 декабря 2010

По умолчанию preg_match не поддерживает разбор многострочной строки (String, содержащей \ n), поэтому вам нужно передать дополнительный параметр для соответствия всей строке, которая равна m (multiline).

попробовать

if (preg_match ("/<(\S+@\S+\w)>.*\n?.*55[0-9]/im",$body,$match)) {
echo "found!";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...