Mam poniższy tekst i chce z niego wyci±gn±ć tylko adresy e-mail, które s± po słowie Kontakt. Poniższy kod działa pod warunkiem że występuje drugi adres e-mail w kolejnej linii. Kod nie działa gdy występuje po słowie Kontakt tylko jeden adres e-mail.

  1. <?php
  2. $text = 'Jaki¶ tekst Jaki¶ tekst Jaki¶ tekstJaki¶ tekst
  3.  
  4. Kontakt: <a href="mailto:1@gmail.sbr">1@gmail.com</a>,
  5. <a href="mailto:2@onet.pl">2@onet.pl</a>
  6.  
  7. Jaki¶ tekst Jaki¶ tekst Jaki¶ tekst Jaki¶ tekst
  8. <a href="mailto:3@gmail.eu">3@onet.eu</a>
  9. Jaki¶ tekst Jaki¶ tekst Jaki¶ tekst Jaki¶ tekst
  10. ';
  11. preg_match_all("/(Kontakt: +\K[-.\w]+@[-.\w].*)+([?=\r\n][-.\w]+@[-.\w].*)/", strip_tags($text), $matches);
  12. foreach($matches[0] as $val){
  13. echo $val;
  14. }


Przerobiłem regex i działa. Przesyłam kod gdyby komu¶ się przydało.

  1. preg_match_all("/((Kontakt: +\K[-.\w]+@[-.\w].*)(\n(?=[-.\w]+@[-.\w]).*|.))/", strip_tags($text), $matches);
  2. foreach($matches[0] as $val){
  3. echo $val;
  4. }