Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]$DOM->getElementsByTagName('tr'); obcina wszystkie znaczniki
php11
post
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 5
Dołączył: 11.02.2011

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


Cześć,


chcę przenieść zawartość tabeli html do php by odpowiednio wyświetlić dane.
Poniższy przykład działa prawie dobrze

  1. https://gist.github.com/vihoangson/1d0c4d5b9de97d29d72ee1dda7256f6c


jednak obcina za dużo ;-)

Poza znacznikami tabeli usuwa też znaczniki linków, zdjęcia, które w tej taneli są.
Co zrobić, by tak się nie działo?

Z góry dziekuję za podpowiedzi...

Ten post edytował php11 21.10.2022, 20:13:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


Mój błąd, metoda C14N jest odpowiednikiem outerHTML z JS, bo zwraca również kod aktualnego węzła. Ponadto przekształca kod HTML na zgodny z XML.
Poniższa metoda też nie jest idealna (ma pierwszą wadę z C14N, ale nie zmienia kodu).

  1. <?php
  2. $html='<table><tr><td>1</td><td><a href="#">2</a></td></tr><tr><td>3</td><td>4</td></tr></table>';
  3. $dom = new DOMDocument;
  4. $dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
  5. $xpath = new DOMXPath($dom);
  6.  
  7. $trs = $xpath->query('//table/tr');
  8. $tabela = [];
  9.  
  10. foreach($trs as $key1 => $tr) {
  11. $tabela[$key1]=[];
  12.  
  13. $tds = $xpath->query('.//td', $tr);
  14.  
  15. foreach($tds as $key2 => $td) {
  16. $tabela[$key1][$key2]=substr(substr($td->ownerDocument->saveHTML($td),4),0,-5);
  17. }
  18. }
  19. print_r($tabela);
  20. ?>


Ten post edytował trueblue 24.10.2022, 09:36:31
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: 28.12.2025 - 14:24