Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] DOM Pobieranie adresu obrazka...
Forum PHP.pl > Forum > Przedszkole
nawasaqi
Witam serdecznie mam pytanie próbuję pobrać adres obrazka z nastepującego kodu poprzez DOM:

  1. <div id="article_image"><!-- rel max = 4 -->
  2. <div>
  3.  
  4. <img border="0" src="http://adres.pl/img/Q.jpg" title="tytul_obrazkai" alt="blablabla">
  5.  
  6.  
  7. <p class="desc">sadasd asdasd<span> (autor/autor)</span></p>
  8.  
  9. </div>
  10. </div


Mój kod:
  1. $html = file_get_html('test.html');
  2.  
  3. foreach($html->find('img[id=article_image]') as $e)
  4.  
  5. echo $e->src . '<br>';


Ale coś lipa. Pomoże ktoś jak wyciągnąc obrazek zz tego elementu <div> questionmark.gif wszystkie obrazki nie ma problemu ale che pobrać akurat dwa które znajduja się w div=article_image. Z góry dziekuję za pomoc.
Comandeer
Nie korzystaj ze starego Simple DOM Parser. Skorzystaj z DOM wbudowanego w PHP: http://php.net/DOM
Wówczas pobierzesz sobie ten div przez $doc->getElementById, a następnie wyciągniesz z niego obrazki przez $div->getElementsByTagName (alternatywnie możesz się pobawić XPath).
nawasaqi
Kurde cosik mi to nie prądzi dalej... thumbsdownsmileyanim.gif
  1. $dom = new DOMDocument();
  2. $dom->loadHTML($html);
  3.  
  4. $div = $dom->getElementById('article_image');
  5. $image = $div->getElementsByTagName('img');
  6.  
  7. foreach ($image as $images) {
  8. echo $images->getAttribute('src');
  9. }
  10.  
  11.  
  12. ?>



Edit już znalazłem błąd i poprawiłem wink.gif

Dzięki za pomoc....
EDIT 2:


Ostatnie pytanie wink.gif Chodzi mi o pobieranie tekstu z tagami html.
Teraz załużmy pobieram coś i chce wyświetlić tekst $div1->textContent i mam tekst bez formatowania ale ja bym chciał pobrać tekst z tagami. W SimpleDom była funkcja outertext i trobiłem to tak: strip_tags($e->outertext,'<br>,<b>') i wycinało całe formatowanie bez br i b. Jak to zrobić w tej wbudowanej wersji DOM questionmark.gif
nawasaqi
Dzięki ogarnąłem już.... ale mam problem kolejny wink.gif chciałem zczytać linki sobie i jak z pobraniem linków wszystkich ze strony nie mam problemów to by wyciągnąc link z class nie działa mi ;( Jak robię od razu getElementsByTagName('a') to mi ładnie pobiera wszystkie linki ale jak chcę z konkretnej class'y getElementById('xyz') to nie działa.

  1. <div class="xyz">
  2.  
  3.  
  4.  
  5. <ul>
  6. <li >
  7. <a href="http://jakasstrona/index.html">
  8. <img src="http://jakasstrona/obrazek.jpg"/>
  9. </a>
  10.  
  11.  
  12. </li>
  13. </ul>
  14. <ul>
  15. <li >
  16. <a href="http://jakasstrona/index2.html">
  17. <img src="http://jakasstrona/obrazek2.jpg"/>
  18. </a>
  19.  
  20.  
  21. </li>
  22. </ul>
  23.  
  24. </div>


  1. $dom = new DOMDocument();
  2. $dom->loadHTML($html);
  3.  
  4.  
  5.  
  6. $div = $dom->getElementById('xyz');
  7. $links = $div->getElementsByTagName('a');
  8. foreach ($links as $link) {
  9. $li = $link->getAttribute('href');
  10. echo ($li."<br>");
  11. }



viking
Musisz rozróżniać klasę od identyfikatora. W HTML masz klasę .xyz.
http://stackoverflow.com/questions/6366351...ts-by-classname
nawasaqi
Dzięki kolego ogarnąłem wink.gif

Nie chce zakładac nowego tematu ale mam taką zagwozdkę wink.gif

  1. $adept = '<a href="http://strona.pl/miasto/gliwice,oferta,4204026>"';
  2. $pattern = '#http://strona.pl/miasto/(.+?),oferta,(.+?)#';
  3. preg_match_all($pattern, $adept, $matches);
  4. print_r ($matches);


I nie wyświetla mi ostatniego ID 4204026 tylko jego pierwszą cyfrę... Ktoś pomoże questionmark.gif

nospor
$pattern = '#http://strona.pl/miasto/(.+?),oferta,(\d+)#';
nawasaqi
Dzięki dodałem parametr U na końcu za # i też poszło wink.gif a siedziałem 3h nad tym ;/
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.