Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z preg_match_all
Forum PHP.pl > Forum > Przedszkole
Greg23
Chciałbym z poniższego kodu pobrać wszystkie tagi:

  1. <a class="user" href="">A</a>
  2. <div class="tags">
  3. <a class="tag" href="http://">mic</a>
  4. <a class="tag" href="http://">jac</a>
  5. <a class="tag" href="http://>mon</a>
  6. <a class="tag" href="http://">fir</a>
  7.  
  8. </div>
  9.  
  10.  
  11. (...)
  12.  
  13. <a class="user" href="">B</a>
  14. <div class="tags">
  15. <a class="tag" href="http://">mic</a>
  16. <a class="tag" href="http://">jac</a>
  17. <a class="tag" href="http://>mon</a>
  18. <a class="tag" href="http://">fir</a>
  19.  
  20. </div>
  21.  
  22.  
  23. (...)
  24.  
  25. <a class="user" href="">C</a>
  26. <div class="tags"> </div>
  27.  
  28. (...)
  29.  
  30. <a class="user" href="">D</a>
  31. <div class="tags">
  32. <a class="tag" href="http://">mic</a>
  33. <a class="tag" href="http://">jac</a>
  34. <a class="tag" href="http://>mon</a>
  35. <a class="tag" href="http://">fir</a>
  36.  
  37. </div>
  38.  
  39.  
  40. (...)


Robię to w pętli za pomocą:

  1. $tager = '/<div class="tags">(.+?)<a class="tag" href="(.+?)&#32(.+?)<\/div>/ims';
  2. preg_match_all($tager, $nazwa, $tager);
  3. $tag=$tager[0][$a];


Niestety czasem tagów nie ma i jest tylko pusty div:
  1. <a class="user" href="">C</a>
  2. <div class="tags"> </div>


W tym momencie mój skrypt wariuje i zamiast zwrócić pusty wynik, pobiera tagi dla kolejnej kolumny, czyli dla tej gdzie USER = D zamiast C (pusta).

Czy da się jakoś zmusić skrypt, żeby w wypadku pustego diva z tagami zwracał pusty wynik zamiast szukać kolejnego ?
kontur
if(pusty tag) break;
Greg23
To mi fest doradziłeś wink.gif

Piwo postawie jak ktos pomoże smile.gif
lukesh
Co masz na myśli, że chcesz pobrać wszystkie tagi?? W sensie te tagi, które mają klasę "tag", czy tagi w sensie wszystkie tagi na stronie? I co później będziesz robił z tymi tagami? Zjesz je? tongue.gifP Myślę, że można w prosty sposób to zrobić z jQuery, ale muszę wiedzieć, co konkretnie chcesz zrobić.
Greg23
Chce pobrać zawartość:
  1. <a class="user" href="">B</a>
  2. <div class="tags">
  3. <a class="tag" href="http://">mic</a>
  4. <a class="tag" href="http://">jac</a>
  5. <a class="tag" href="http://>mon</a>
  6. <a class="tag" href="http://">fir</a>
  7. </div>

W tym wypadku słowo mic, jar, mon, fir

Jak już wspomniałem wszystko dobrze działa dopóki skrypt nie trafi na miejsce gdzie tagów nie ma:
  1. <a class="user" href="">C</a>
  2. <div class="tags">brak tagów takich jak wyżej</div>


Wtedy pobiera tagi dla kolejnego 'sektora' zamiast zwrócić pusty wynik (brak tagów).
lukesh
Ja użyłbym jQuery i prostego skryptu:

  1. var elements = new Array();
  2. $('a.tag').each(function(){
  3. elements.push($(this).text());
  4. });
  5. alert(elements);


Skrypt wykonuje pętlę i po kolei dodaje wartości do tablicy.
Greg23
Tylko, że ja w ogóle nie mam pojęcia o jquery :/
Co muszę dołączyć, żeby to zadziałało ?
W jaki sposób wyświetlić wyniki ?
viking
Poczytaj o phpQuery http://code.google.com/p/phpquery/ (krótki opis po polsku http://tworzenie-stron-www.org/article/9/p...ienstwo_jquery). Generalnie wyszukasz "div.tags a.tag" i coś tam dalej ze znalezionymi danymi zrobisz.
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.