Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> DOMDocument - childNodes łączy wszystkie paragrafy 1 jeden #text node, Jak policzyć wszystkie dzieci w danym elemencie?
adbacz
post
Post #1





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Mam taki oto kodzik:
  1. libxml_use_internal_errors(true);
  2. $html = '<html><head><meta charset="UTF-8"/></head><body><div id="CONTAINER">'.content.'</div></body></html>';
  3. $doc = new DOMDocument('1.0', 'utf-8');
  4. $doc->loadHTML($html);
  5. $root = $doc->getElementById('CONTAINER');
  6. $childNodes = $root->childNodes;


I teraz w zmiennej $childNodes mam listę dzieci elementu o id 'CONTAINER'. W tej treści są elementy <p>, <blockquote>, <img> i <figure>. W sumie tych elementów jest jakieś 30, ale wg pętli foreach, jest ich tylko 19. Ponieważ DOMDocument twierdzi, że każdy <p> który znajdzie jeden obok drugiego, tworzy jako element #text i teraz, jak mam 5x<p> obok siebie w dokumencie, to w pętli mam je wszystkie jako JEDEN element #text.

Jak to rozwiązać, by faktycznie były to elementy pojedyncze, a nie jak teraz, pogrupowane po typie (jeśli leżą obok siebie w dokumencie)? Potrzebuje dokładnie policzyć elementy, ponieważ muszę w środek wrzucić dodatkowy element, a jak mi oblicza w ten sposób to nie mam prawidłowej ilości elementów.
Go to the top of the page
+Quote Post
trueblue
post
Post #2





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

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


Dla:
  1. $html = '<html><head><meta charset="UTF-8"/></head><body><div id="CONTAINER"><p>a</p><p>b</p><span>a</span><div>abc</div></div></body></html>';

mam 4 elementy.
Czy czasem paragrafy nie są zamienione w encje html?
Go to the top of the page
+Quote Post
adbacz
post
Post #3





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Pytasz o to, czy czasem nie jest tak:
Kod
<p></p>

(IMG:style_emoticons/default/questionmark.gif)

Jeśli o to, to wszystko jest poprawnie, ponieważ sprawdzałem i w źródle przed wykonaniem tego kodu, i wyświetlałem $child->nodeValue i nie było żadnych elementów HTML, żadnych encji, sam tekst bez znaczników.

Ten post edytował adbacz 15.02.2017, 22:36:52
Go to the top of the page
+Quote Post
trueblue
post
Post #4





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

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


Tak.
Nie?
Go to the top of the page
+Quote Post
adbacz
post
Post #5





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


hehe, chyba znalazłem niechcący błąd forum (IMG:style_emoticons/default/biggrin.gif)

Miałem encje HTML w kodzie powyżej, jak widziałeś, zrobiłem edycję szybką, i po zapisaniu i odświeżeniu już nie ma encji - jak widać teraz (IMG:style_emoticons/default/biggrin.gif)

-----------


Wszystko jest poprawnie, ponieważ sprawdzałem i w źródle przed wykonaniem tego kodu, i wyświetlałem $child->nodeValue i nie było żadnych elementów HTML, żadnych encji, sam tekst bez znaczników.

Ten post edytował adbacz 15.02.2017, 22:38:53
Go to the top of the page
+Quote Post
trueblue
post
Post #6





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

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


Teraz to już nie wiem jaki masz oryginalny content.
Czy jest tam <p> czy &lt;p&gt;
Go to the top of the page
+Quote Post
adbacz
post
Post #7





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Tutaj forum popsuło coś i encje zamieniły mi się na znaczniki HTML w kodzie w poprzednim poście.

Oryginalny content to zwykłe znaczniki HTML, bez encji. Sprawdzałem w źródle strony po wykonaniu echo i jest HTML (są znaczniki <p>) bez encji.
Go to the top of the page
+Quote Post
trueblue
post
Post #8





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

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


A jaką ilość otrzymujesz podstawiając moje $html?
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: 24.08.2025 - 04:01