Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z preg_match_all, pobiera nie te dane co trzeba
Greg23
post
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


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 ?

Ten post edytował Greg23 9.05.2012, 15:03:10


--------------------
Go to the top of the page
+Quote Post
kontur
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 6
Dołączył: 3.04.2012

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


if(pusty tag) break;
Go to the top of the page
+Quote Post
Greg23
post
Post #3





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


To mi fest doradziłeś wink.gif

Piwo postawie jak ktos pomoże smile.gif

Ten post edytował Greg23 10.05.2012, 05:43:47


--------------------
Go to the top of the page
+Quote Post
lukesh
post
Post #4





Grupa: Zarejestrowani
Postów: 113
Pomógł: 14
Dołączył: 25.08.2006

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


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ć.


--------------------
Edumemo.pl - Nauka Języków Obcych
Go to the top of the page
+Quote Post
Greg23
post
Post #5





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


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).

Ten post edytował Greg23 10.05.2012, 07:47:57


--------------------
Go to the top of the page
+Quote Post
lukesh
post
Post #6





Grupa: Zarejestrowani
Postów: 113
Pomógł: 14
Dołączył: 25.08.2006

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


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.


--------------------
Edumemo.pl - Nauka Języków Obcych
Go to the top of the page
+Quote Post
Greg23
post
Post #7





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


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 ?


--------------------
Go to the top of the page
+Quote Post
viking
post
Post #8





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


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.

Ten post edytował viking 11.05.2012, 09:17:51


--------------------
Go to the top of the page
+Quote Post

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: 19.08.2025 - 21:35