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
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Od tego są pętle (IMG:style_emoticons/default/wink.gif)
  1. foreach ($dom->getElementsByTagName('a') as $node) {
  2. echo $node->textContent;
  3. }


edit: i po co 2x tworzysz $dom = new DOMDocument;?

edit2:
  1. <?php
  2.  
  3. libxml_use_internal_errors(true);
  4. $dom = new DOMDocument;
  5. $dom->loadHTML('<tr><td><a href="A">asd</a></td><td><a href="b">asd2</a><a href="c">asd3</a></td>');
  6.  
  7. foreach ($dom->getElementsByTagName('td') as $node) {
  8. foreach ($node->getElementsByTagName('a') as $a) {
  9. echo $a->getAttribute('href');
  10. }
  11. }


Ten post edytował CuteOne 29.04.2016, 19:18:05
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: 9.10.2025 - 16:28