Не удалось получить желаемые результаты с помощью preg_match_all - PullRequest
0 голосов
/ 08 октября 2010

Я пытаюсь запрограммировать скрипт php для отправки по электронной почте, который будет принимать отчет об обновлении входящего трафика по электронной почте и извлекать из него соответствующую информацию для сохранения в базе данных.

Электронное письмо обычно начинается с некоторого вступления, в котором важная информация отображается в следующем формате.

Highway : Some Highway 
Time : 08-Oct-2010 08:10 AM 
Condition : Smooth (or slow moving etc)

Я пробовал с этим кодом

preg_match_all('/(?P<\name>\w+) : (?P<\data>\w+)/i', $subject, $result);

Обратите внимание, что </ действительно просто <, но почему-то они здесь не отображаются. </p>

А совпадения только:

Highway : Some
Datetime : 08
Condition : Smooth

Кто-нибудь может мне сказать, чего не хватает в моем втором выражении регулярного выражения? Почему он не включает всю строку слов после ":"?

1 Ответ

1 голос
/ 08 октября 2010

Вы захватываете \w+. Соответствует только символам слова, без пробелов и скобок.

Попробуйте

preg_match_all('/(?P<name>\w+)\s*:\s*(?P<data>.*)/i', $subject, $result);

попробуйте использовать .*? Это будет соответствовать всему до новой строки

...