Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobranie kodu HTML ze znacznika body
sazian
post
Post #1





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


Witam,
natrafiłem na problem którego rozwiązanie początkowo wydawało się bardzo błahe, a jednak baruję się z tym od dłuższego czasu i nic :/

Do rzeczy, mam podany pewien kod HTML i potrzebuję z niego wyciągnąć to co jest wewnątrz znacznika body,
wystarczyła chwilka googlowania i mam gotowy kod
  1.  
  2. function get_inner_html( $node ) {
  3. $innerHTML= '';
  4. $children = $node->childNodes;
  5.  
  6. foreach ($children as $child) {
  7. $innerHTML .= $child->ownerDocument->saveXML( $child );
  8. }
  9.  
  10. return $innerHTML;
  11. }
  12.  
  13. $html='<HTML><HEAD>
  14.  
  15. <BODY>
  16. <P align=center>1111</P>
  17. <br />
  18. <P style="width:100px"></P>
  19.  
  20. </BODY>
  21. </HTML';
  22. $doc = new DOMDocument();
  23. $doc->loadHTML($html);
  24. $node = $doc->getElementsByTagName('body');
  25. echo get_inner_html($node->item(0));
  26.  


kod wynikowy wygląda tak
  1.  
  2. <p align="center">1111</p>
  3. <br/><p/>
  4. <p style="width:100px"/>


Jak widać pierwszy znacznik p oraz br zachowały się prawidłowo, problemem jest drugi i trzeci znacznik znacznik p. Jeśli znaczniki zostaną zapisane w taki sposób i wyświetlę je w przeglądarce to cały kod się rozwala bo przeglądarka uznaje że te znaczniki nie mają zamknięć.

Oczywiście DOMDocument ma opcję wymuszającą tworzenie domknięć ale jak ją dodam to tworzy mi <br></br> sad.gif


Pomożecie ? smile.gif

Ten post edytował sazian 2.12.2015, 20:15:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
trueblue
post
Post #2





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

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


Skąd się u Ciebie wzięło stylowanie <p>?

  1. $dom=new DomDocument();
  2. $previous_value = libxml_use_internal_errors(true);
  3. $dom->loadHTML($html);
  4. $body=$dom->saveHTML($dom->getElementsByTagName('body')->item(0));
  5.  
  6. echo htmlentities(preg_replace('~<(?:!DOCTYPE|/?(?:html|head|body))[^>]*>\s*~iu','',$body));


--------------------
Go to the top of the page
+Quote Post
sazian
post
Post #3





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


fakt później to dopisałem i widocznie nie przekopiowałem.

Kurde pamiętam że jeszcze nie tak dawno kombinowałem coś w ten deseń i za pieruna nie chciało działać tongue.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 13:39