Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP preg_match_all problem z zapisem do tablicy
Forum PHP.pl > Forum > PHP
MarcinKostrzewa2
Witam,

mam poniższy kod,
  1. preg_match_all('[class="addr">\s([a-zA-Z0-9\s\/±¶żĽćęńłóˇ¦Ż¬ĆŃŁÓ:,&-/\"]+?)</p>]', $zrodlo_strony, $wynik);
  2. preg_match_all('[S2">([a-zA-Z0-9\s\/±¶żĽćęńłóˇ¦Ż¬ĆŃŁÓ–,&-x22/\"]+?)</a></h3>]', $zrodlo_strony, $wynik2);
  3. preg_match_all('[callto:([a-zA-Z0-9\s\/±¶żĽćęńłóˇ¦Ż¬ĆŃŁÓ–+,&-x22/\"]+?)"]', $zrodlo_strony, $wynik3);
  4. for ($i=0;$i<500;$i++) {
  5. echo "<br>";
  6. echo $i+1;
  7. echo ";";
  8. echo $wynik[1][$i];
  9. echo ";;";
  10. echo $wynik2[1][$i];
  11. echo ";;;";
  12. echo $wynik3[1][$i];
  13. }


$wynik3 w tej tablicy zapisywane s± numery telefonów, natomiast zdarza się że numeru telefonu nie ma i chciałbym, aby w to miejsce wpisany było np, brak.
próbowałem tak:
  1. if ($wynik3[1][$i]==null) {$wynik3[1][$i] = "brak";}

i rzeczywi¶cie wy¶wietla komunikat brak ale zawsze na końcu tablicy, a ja potrzebuję takiej informacji np dla rekordu $wynik[1][324] czyli tam gdzie telefonu brakuje, a nie na końcu tablicy.


cycofiasz
Użyj więc tylko jednego preg_match_all z odpowiednim wyrażeniem
MarcinKostrzewa2
Czy jest zatem kto¶ kto pomógłby mi poł±czyć te trzy preg_match w jeden?
cycofiasz
Podaj jak±¶ przykładow± zawarto¶ć $zrodlo_strony to prędzej Ci kto¶ pomoże
MarcinKostrzewa2
a da rade z tego co napisałem w pierwszym po¶cie? Skleić te trzy preg
nekomata
Poł±cz te regex'y żarłokiem (.*) . powinno zadziałać . Tylko pamiętaj o wła¶ciwej kolejno¶ci ł±czenia .
MarcinKostrzewa2
Próbowałem ł±czyć to m.in tak
  1. preg_match_all('[S2">([a-zA-Z0-9\s\/±¶żĽćęńłóˇ¦Ż¬ĆŃŁÓö–,'&-x22\"\']+?)</a></h3>]*[callto:([a-zA-Z0-9\s\/±¶żĽćęńłóˇ¦Ż¬ĆŃŁÓ–+,&-x22/\"]+?)"]', $zrodlo_strony, $nazwa);
, próbowałem na różne sposoby i z różnymi znakami między ][ ale wywala bł±d:
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '?' in /home/koksfree/domains
mortus
Podaj przykładow± warto¶ć zmiennej $zrodlo_strony oraz dane, które chcesz z tego uzyskać. Co do Twojego kodu spróbuj linię 12 zast±pić tym:
  1. echo $wynik3[1][$i] == null ? 'brak' : $wynik3[1][$i];


EDIT
Aczkolwiek ładniej będzie wygl±dało z jednym wyrażeniem regularnym.
MarcinKostrzewa2
mortus niestety twój sposób działa tak samo jak mój czyli informacja "brak" pojawia się na samym końcu Array.
Przykładowa zmienna:


  1. <h3>
  2. <a href="%22DD%7EDobra+Drukarnia%22+Paulina+">&quot;DD-Dobra Drukarnia&quot; Paulina D±browska</a></h3>
  3.  
  4. <div class="data">
  5.  
  6. <p class="addr">
  7. ul. Krakowska 180 b,
  8. Wrocław </p>
  9.  
  10. <p class="tel">
  11. tel.
  12. <span class="telnu">
  13. <a href="callto:+48717851001" >
  14. 71 785 10 01
  15. </a>
  16. </span>
  17. </p>



Naprawde nie wiem jak to zrobić a morduje się z tym od kiedy post założyłem ehh, Da rade kto¶ pomóc??
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.