J'essaie de programmer un script php de messagerie électronique qui prendrait un rapport de mise à jour du trafic entrant par e-mail et extrairait les informations pertinentes pour les stocker dans une base de données.Impossible d'obtenir les résultats souhaités via preg_match_all
L'e-mail commence généralement par une introduction, avec les informations importantes affichées dans le format suivant.
Highway : Some Highway
Time : 08-Oct-2010 08:10 AM
Condition : Smooth (or slow moving etc)
J'ai essayé avec ce code
preg_match_all('/(?P<\name>\w+) : (?P<\data>\w+)/i', $subject, $result);
Notez le </sont vraiment juste < mais en quelque sorte, ils ne sont pas affichés ici.
Et les matches sont seulement:
Highway : Some
Datetime : 08
Condition : Smooth
Quelqu'un peut-il me dire ce qui manque dans ma deuxième expression regex? Pourquoi n'inclut-il pas toute la chaîne de mots après le ":"?
Merci beaucoup Galen! Puis-je savoir ce que * fait exactement? – blacklotus
@blacklotus: L'étoile Kleene ('*') dans une expression régulière signifie zéro ou plusieurs répétitions de quelque chose. Dans cette réponse, '\ s *' signifie zéro ou plusieurs caractères d'espacement. La partie zéro est importante, puisque quelque chose comme 'ab * a' correspond' aba' et 'abbbb' mais * aussi' 'aa'. – eldarerathis
@eldarerathis Merci! – blacklotus