Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zagnieżdżony teskt
Forum PHP.pl > Forum > Przedszkole
chcicha
Witam,

Mam strukturę strony:
  1.  
  2. [..]
  3. [...]
  4. <div class="aaa">Lorem ipsum [...]</div>
  5. [...]
  6. <div class="bbb"> Lorem ipsum [...]
  7. <div class="aaa"> Lorem ipsum [...]</div>
  8. Lorem ipsum [...]
  9. </div>
  10. Lorem ipsum [...]
  11. [...]
  12. <div class="bbb"> Lorem ipsum [...]
  13. <div class="aaa">
  14. Lorem ipsum2323 [...]
  15. <div class="ccc">
  16. hdsgad Lorem ipsum [...]
  17. <div class="aaa">INTERESUJĄCY FRAGMENT</div>
  18. </div>
  19. dvsdjf Lorem ipsum [...]
  20. </div>
  21. vLorem ipsum [...]
  22. </div>


Jak wyciągnąć tekst który jest w aaa ale w zagnieżdżeniu: body->bbb->aaa->ccc->aaa [tekst].
Próbowałem z wyrażeniami regularnymi ale tam mi wyszukuje wszystkie aaa a ja nie znam który index w tablicy znalezionych match będzie odpowiedni.
vonski
Może potraktuj to jak zwykłego XML-a i użyj XPath do znalezienia interesujących Cię danych. Coś w tym rodzaju:

  1. $str = '<body><div> ......... '; // Twoja struktura HTML
  2. $xml = simplexml_load_string($str);
  3.  
  4. $divs = $xml->xpath('//div[@class="bbb"]/div[@class="aaa"]'); // tworzy kolekcję div.aaa będących potomkami div.bbb
  5.  
  6. foreach($divs as $div) {
  7. echo $div;
  8. }
kreatiff
Wyrażeniami regularnymi to będzie trzeba pewnie jakiś look behind zastosować.
  1. preg_match('#(?<=<div class="ccc">).*<div class="aaa">(.*?)</div>#us', $a, $b);
Ale to dość grząski grunt w zależności od skomplikowania kodu.
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.