Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] preg_match, Wyciąganie adresu email ze zwrotek emaili
Karioka
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.10.2007

Ostrzeżenie: (0%)
-----


Witam,

Zdarzają mi się problemy z serwerem poczty i ostatnio mam sporo zwrotek. Aby nie wyciągać z treści emaili adresów ręcznie chcę to robić skryptem PHP. Nie radzę sobie jednak z odpowiednim napisaniem wyrażenia w preg_match.

Koncepcja jest taka: skrypt łączy się ze skrzynką, pobiera wiadomości w pętli i z body wiadomości wycina email, z którego przyszła zwrotka. Jako wynik operacji wyświetla wycięte adresy z emaili w skrzynce. Na koniec kasuje email.

Łączenie do skrzynki działa, treść jest pobierana, kasowanie działa. Nie potrafię jednak wyciąć adresu z treści.

Schemat treści, w jakiej jest email wygląda tak:

  1. for <a href="[email="adresemail@wp.pl"]mailto:adresemail@wp.pl[/email]" onclick="return rcmail.command('compose'


Mój skrypt obecnie wygląda tak (preg_match testowałam już w różnej postaci):

  1. <?
  2. IF($mbox = imap_open("{mail.poczta.serwer.com:110/pop3/notls}INBOX", 'login', 'password'))
  3. {
  4. echo "Połączenie nawiązane<br>";
  5. $emailcou=imap_num_msg($mbox);
  6. if ($emailcou>0)
  7. {
  8. echo '<br />Wiadomości: '.(int)$emailcou; flush();
  9. echo '<br><br>';
  10. for($i = 1; $i <= $emailcou; $i++)
  11. {
  12. $wiadomosc=imap_body($mbox, $i);
  13.  
  14. preg_match('#for <a href=\"mailto:adresemail@wp.pl\" onclick=\"return rcmail.command#is', $wiadomosc, $mail);
  15.  
  16. $mail = $mail[1];
  17. echo $mail."<br>"; // Wyświetla email
  18.  
  19. imap_delete($mbox, $i); // Kasuje wiadomosc
  20. flush();
  21. }
  22. }
  23. imap_expunge($mbox);
  24. imap_close($mbox);
  25. }
  26. ?>


Będę ogromnie wdzięczna za sugestie.


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Thorang Hoog
post
Post #2





Grupa: Zarejestrowani
Postów: 41
Pomógł: 9
Dołączył: 8.02.2009

Ostrzeżenie: (0%)
-----


U mnie skrypt:
  1. <?PHP
  2.  
  3.  
  4. /*IF($mbox = imap_open("{mail.poczta.serwer.com/pop3/notls}INBOX", 'login', 'pass'))
  5.  {
  6. echo "Połączenie nawiązane<br>";
  7. $emailcou=imap_num_msg($mbox);
  8. if ($emailcou>0)
  9. {
  10.  
  11. echo '<br />Wiadomości: '.(int)$emailcou; flush();
  12. echo '<br><br>';
  13. for($i = 1; $i <= $emailcou; $i++)
  14.  
  15. {
  16.  
  17. $wiadomosc=imap_body($mbox, $i);
  18. */
  19. // preg_match('#mailto:"(.*?)"#is', $wiadomosc, $mail);
  20. $wiadomosc = "for <a href=\"mailto:adresemail@wp.pl\" onclick=\"return rcmail.command('compose'";
  21. $match =
  22. '%'.
  23. 'for\s+<a\s+href'.
  24. '\s*=\s*'.
  25. '\"mailto:'.
  26. '('.
  27. '[_a-z0-9\-]+'.
  28. '(?:'.
  29. '\.[_a-z0-9\-]+'.
  30. ')*'.
  31. '@'.
  32. '[a-z0-9\-]+'.
  33. '(?:\.[a-z0-9\-]+)*'.
  34. '(?:\.[a-z]{2,3})'.
  35. ')'.
  36. '\"\s+onclick\s*=\s*\"return\s+rcmail\.command'.
  37. '%is';
  38. preg_match($match, $wiadomosc, $mail);
  39.  
  40. print_r($mail);
  41. $mail = $mail[1];
  42.  
  43. echo $mail;
  44. /*
  45. // imap_delete($mbox, $i); // Kasuje wiadomosc
  46. flush(); }
  47. }
  48. imap_expunge($mbox);
  49. imap_close($mbox);
  50. }*/
  51. ?>

dał wynik:
Kod
Array
(
    [0] => for <a href="[email="adresemail@wp.pl"]mailto:adresemail@wp.pl[/email]" onclick="return rcmail.command
    [1] => adresemail@wp.pl
)
adresemail@wp.pl


(IMG:style_emoticons/default/dry.gif)
Czy u ciebie w pliku php jest zapisane
linia 25 twojego przykładu: '\"[email=""]mailto:'[/email].
linia 31 twojego przykładu: [email=""]'@'[/email].

Jeśli tak to usuń [email=""] oraz [/email]
chyba że to błąd forum (IMG:style_emoticons/default/tongue.gif) to zamieść przykładową treść maila (To zobaczę czy aby na pewno dobre podstawienie napisałem) albo spróbuj
  1. $match = '%mailto:([_a-z0-9\-]+(?:\.[_a-z0-9\-]+)*@[a-z0-9\-]+(?:\.[a-z0-9\-]+)*(?:\.[a-z]{2,3}))%is';


znajdzie pierwszy adres maila w tekście.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 23:41