Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #21745 > unrolled thread

trovare la metà di un DOM

Started bySandro kensan <kensan@kensan.it>
First post2017-11-09 23:35 +0100
Last post2017-11-09 23:35 +0100
Articles 1 — 1 participant

Back to article view | Back to it.comp.www.php


Contents

  trovare la metà di un DOM Sandro kensan <kensan@kensan.it> - 2017-11-09 23:35 +0100

#21745 — trovare la metà di un DOM

FromSandro kensan <kensan@kensan.it>
Date2017-11-09 23:35 +0100
Subjecttrovare la metà di un DOM
Message-ID<f6k3h2Feg3iU1@mid.individual.net>
Vorrei trovare la metà di una pagina html con operazioni sul DOM, in
pratica vorrei inserire la pubblicità a metà di un testo che non
contiene tag <p> ma solo <br>.

La mia idea è quella di trovare tutti i rami dell'albero che partono
dalla radice (<body>), trovarne la lunghezza in termini di solo testo
contenuto e poi dividere a metà in modo che il testo contenuto "sopra"
N-1 e "sotto" al ramo N sia circa uguale. Quindi inserire la pubblicità
tra il ramo N-1 e il ramo N.

Con "sopra" intendo tra il primo ramo ovvero quello più vicino a <body>
e N-1 mentre con "sotto" intendo tra il ramo N e l'ultimo ramo più
vicino a </body>.

Come ordinamento del DOM ho in mente quello presente nel file html, non
so se il DOM rispetta l'ordinamento del file ma credo di si.

Esempio:

<body>
Ciao ciao<br>
<blockquote>
Ciao ciao <a href="">Ciao ciao</a>
</blockquote>
<a href="">Ciao ciao</a>
Ciao ciao<br>
Ciao ciao
</body>

che indentato fornisce i rami e un ordinamento:

<body>
  Ciao ciao
  <br>
  <blockquote>
    Ciao ciao <a href="">Ciao ciao</a>
  </blockquote>
  <a href="">Ciao ciao</a>
  Ciao ciao
  <br>
  Ciao ciao
</body>

Gli esperti del ng possono fornirmi una intelaiatura di programma che
faccia uso di funzioni tipo queste?:

  $dom= new DOMDocument();
  $dom->loadHTML($strHtml);
  //trim lasts <br> in the DOM
  $element = $dom->getElementsByTagName("body")->item(0);
  $childs = $element->childNodes;
  for ($i = $childs->length; --$i >= 0; ) {
    $el = $childs->item($i);
    if ($el->nodeName == "br") $el->parentNode->removeChild($el);
    else break;
  }

In particolare mi servirebbe una procedura ricorsiva che trovi il
"value" di un ramo ($el).
-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [standalone]


Back to top | Article view | it.comp.www.php


csiph-web