Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] DOM Pobieranie adresu obrazka...
nawasaqi
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


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> (IMG:style_emoticons/default/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.

Ten post edytował nawasaqi 30.10.2015, 18:41:25
Go to the top of the page
+Quote Post
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


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).
Go to the top of the page
+Quote Post
nawasaqi
post
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


Kurde cosik mi to nie prądzi dalej... (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/wink.gif)

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


Ostatnie pytanie (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował nawasaqi 31.10.2015, 08:47:07
Go to the top of the page
+Quote Post
viking
post
Post #4





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

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


http://php.net/manual/en/domdocument.savehtml.php
Go to the top of the page
+Quote Post
nawasaqi
post
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


Dzięki ogarnąłem już.... ale mam problem kolejny (IMG:style_emoticons/default/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. }



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





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

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


Musisz rozróżniać klasę od identyfikatora. W HTML masz klasę .xyz.
http://stackoverflow.com/questions/6366351...ts-by-classname
Go to the top of the page
+Quote Post
nawasaqi
post
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


Dzięki kolego ogarnąłem (IMG:style_emoticons/default/wink.gif)

Nie chce zakładac nowego tematu ale mam taką zagwozdkę (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/questionmark.gif)

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





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




$pattern = '#http://strona.pl/miasto/(.+?),oferta,(\d+)#';
Go to the top of the page
+Quote Post
nawasaqi
post
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


Dzięki dodałem parametr U na końcu za # i też poszło (IMG:style_emoticons/default/wink.gif) a siedziałem 3h nad tym ;/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 16:06