Я пытаюсь написать сценарий, который анализирует электронное письмо и ищет определенные строки после определенных строк.
Например, допустим, у меня есть следующий почтовый ящик.
$body = "Dear John Doe, your information is below Check in date: 07/23/2012 Check out date: 07/26/2012 Alternate Check in date: 07/27/2012 Alternate Check out date: 07/29/2012";
Я хочу захватить «слово» непосредственно после первого экземпляра «Check in date:», который будет «07/23/2012». «Слово» – это следующий набор символов с пробелами вокруг него. Я включил «альтернативные» части, потому что некоторые электронные письма будут иметь текстовую версию и версию html.
Я думаю, мне нужно использовать комбо из strpos (), substr () и explode (), но я не уверен, как это сделать. Какие-либо предложения?
Точно, какие регулярные выражения хороши для:
preg_match('/(?<=Check in date: )\S+/i', $string, $match); echo $match[0];
Это хороший прецедент для регулярных выражений:
if (preg_match('#^Check in date: ([^\s]+)#m', $body, $match)) { $result = $match[1]; }
Попробуйте здесь: http://codepad.viper-7.com/W4UW4P