Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wyciąganie emaili z pliku tekstowego, Wyciąganie maili z pliku za pomocą wyrażeń regularnych
amii
post
Post #1





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Mam plik tekstowy z tabelkami i tekstem gdzie są wmieszane adresy email, chce wyciągnąć z tego pliku adresy email. Napisałem takie coś ale nie działa.

  1. <?php
  2. $handle = file_get_contents('email.txt');
  3. $wzor = "/^\w{2,}[\w+\.]*+@\w+[\w+\.]*\.\w{2,}$/"; //tu jest cos zrabane najprawdopodobniej
  4. $szukaj = preg_match_all($wzor, $handle, $matches);
  5.  
  6. foreach ($matches as $value) {
  7. echo $value . '<br>';
  8. }
  9. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
amii
post
Post #2





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


OK podbijam tamten poprzedni problem już rozwiązałem. Teraz Chcę napisać funkcję odpowiedzialną za wydobywanie adresów email z plików tekstowych umieszczonych w domyślnym katalogu 'katalog' i i ich umieszczanie w osobnym pliku tekstowym lub bazie danych. Mam problem ze zliczeniem ilości wydobytych maili z pliku, zmienna $ile_maili wyświetla zły wynik, kod funkcji wygląda tak:

  1. function wydobadz() {
  2. $plik1 = 'adresy.txt'; //plik tekstowy do zapisywania wydobytych adresów email
  3. $wzor = "/([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}/"; //wzor maila jako wyrazenie regularne
  4. $matches = array();
  5. $handle = scandir('katalog');
  6.  
  7. for ($g=2; $g<count($handle); $g++) { //obieg petli rowny ilosci plikow w katalogu
  8. $plik = file_get_contents('katalog/'. $handle[$g]); //kazdy plik w katalogu wczytywany jako ciag znakow string
  9. $szukaj = preg_match_all($wzor, $plik, $matches, PREG_PATTERN_ORDER); //nastepnie szukamy wyrazen pasujacych do wzoru czyli adresow email
  10. $matches = array_unique($matches); //filtrujemy duplikaty
  11. $ile_maili = count($matches[$i]); //zliczamy ilosc wydobytych emaili
  12.  
  13.  
  14. for ($i=0, $j=0; $i<$ile_maili; $i++, $j++) { //zapisujemy wydobyte emaile do bazy lub do pliku txt domyslnie ustawione do pliku
  15. if ($matches[0][$i] != '') {
  16. //$sql4 = "INSERT INTO tabelka (id, emaile) VALUES (NULL, '$matches[$i]')";
  17. //mysql_query($sql, $conn) or die('Nie mam dostępu do bazy'. mysql_error());
  18.  
  19. $otworz1 = fopen($plik1, 'w+');
  20. if (!$otworz1) {
  21. echo 'Nie mogę otworzyć pliku' . $plik1;
  22. }
  23. else {
  24. for ($z=0; $z<$ile_maili; $z++) {
  25. $zapisuje = fwrite($otworz1, $matches[0][$z]. '');
  26. }
  27.  
  28. }
  29. fclose($otworz1);
  30. echo 'Zapisałem ' .$ile_maili . ' mail do pliku ' . $plik1 . ' status: OK';
  31. }
  32. else {}
  33. }
  34. }
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.10.2025 - 20:43