Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sprawdzenie ilości odnośników w kolumnie tabeli + odczytanie ich wartości przy pomocy Simple HTML DOM Parser
uki8877
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 27.03.2016

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


Witam

Zakładam nowy temat ,ponieważ może w przyszłości ktos bedzie mial podobny problem ,a wtedy rozwiazanie bedzie pod reką

mam taki string:

  1. <td class="td1">
  2. <a href="https://facebook.com">Odnosnik1</a>
  3. <a href="https://google.com">Odnosnik1</a>
  4. </td>


niby banalne do wyciagniecia danych, jednak jest problem ,poniewaz kolumna o klasie td1 nie zawsze ma 2 linki ,ale czasami jeden czyli kod wyglada tak /:

  1. <td class="td1">
  2. <a href="https://facebook.com">Odnosnik1</a>
  3. </td>


tych kolumn moze byc duzo, a mnie zalezy aby wyciagnac z tego linki i tekst z linkow.

Mam taki kod :
  1. foreach($html->find('td[class=td1]') as $td1) {
  2.  
  3. libxml_use_internal_errors(true);
  4. $dom = new DOMDocument;
  5. $dom->loadHTML($td1);
  6.  
  7. switch ($dom->getElementsByTagName('a')->length)
  8. {
  9. case 1:
  10.  
  11. echo $dom->getElementsByTagName('a')->item(0)->textContent . "<br />";
  12. break;
  13.  
  14. case 2:
  15.  
  16. echo $dom->getElementsByTagName('a')->item(0)->textContent . "--";
  17. echo $dom->getElementsByTagName('a')->item(1)->textContent . "<br />";
  18. break;
  19.  
  20. }
  21.  
  22. }


Moze zaproponujecie lepszy sposob ,jesli istnieje :-)

No i przy takim kodzie nie moge wyciagnac linkow , gdy wpisuje
  1. $dom->getElementsByTagName('a')->item(0)->href;


to dostaje
"Undefined property: DOMElement::$href "

co w sumie jest normalne,bo tablica
  1. $dom->getElementsByTagName('a')->item(0)
nie zawiera odnośnika. Tak wiec w jaki sposob moge go wyciagnac ?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
uki8877
post
Post #2





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 27.03.2016

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


Dzieki za odpowiedz

caly kod wyglada tak :

  1. $html = str_get_html($html);
  2.  
  3.  
  4.  
  5. foreach($html->find('td[class=td1]') as $td1) {
  6.  
  7. libxml_use_internal_errors(true);
  8. $dom = new DOMDocument;
  9. $dom->loadHTML($td1);
  10.  
  11.  
  12. switch ($dom->getElementsByTagName('a')->length)
  13. {
  14. case 1:
  15.  
  16. echo $dom->getElementsByTagName('a')->item(0)->textContent . "<br />";
  17. break;
  18.  
  19. case 2:
  20.  
  21. echo $dom->getElementsByTagName('a')->item(0)->textContent . "--";
  22. echo $dom->getElementsByTagName('a')->item(1)->textContent . "<br />";
  23. break;
  24.  
  25. }
  26.  
  27. }


moze doradzisz co tu jest niepoprawne i dlaczego ? jesli chodzi o parsowanie to zaczynam z tym zabawe ,getAttribute znalazlem przypadkowo w ktoryms komentarzu z tego linka : http://php.net/manual/en/domdocument.getel...tsbytagname.php :-)
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 18:16