3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Html{ protected $reachedLimit = false, $totalLen = 0, $maxLen = 25, $toRemove = array(); public static function trim($html, $maxLen = 25){ $dom = new DomDocument(); $dom->loadHTML($html); $html = new static(); $toRemove = $html->walk($dom, $maxLen); // remove any nodes that passed our limit foreach($toRemove as $child) $child->parentNode->removeChild($child); // remove wrapper tags added by DD (doctype, html...) if(version_compare(PHP_VERSION, '5.3.6') < 0){ // http://stackoverflow.com/a/6953808/1058140 $dom->removeChild($dom->firstChild); $dom->replaceChild($dom->firstChild->firstChild->firstChild, $dom->firstChild); return $dom->saveHTML(); } return $dom->saveHTML($dom->getElementsByTagName('body')->item(0)); } protected function walk(DomNode $node, $maxLen){ if($this->reachedLimit){ $this->toRemove[] = $node; }else{ // only text nodes should have text, // so do the splitting here if($node instanceof DomText){ $this->totalLen += $nodeLen = strlen($node->nodeValue); // use mb_strlen / mb_substr for UTF-8 support if($this->totalLen > $maxLen){ $node->nodeValue = substr($node->nodeValue, 0, $nodeLen - ($this->totalLen - $maxLen)) . '...'; $this->reachedLimit = true; } } // if node has children, walk its child elements if(isset($node->childNodes)) foreach($node->childNodes as $child) $this->walk($child, $maxLen); } return $this->toRemove; } } $texto = '<p style="text-align: center">(Vecino de Eiras - Senra)</p> <p style="text-align: center">Falleció el día 13 de Septiembre de 2013 a los 78 años de edad.</p> <p style="text-align: center"><strong>D.E.P.</strong></p> <p style="text-align: left">Su hermana, Consuelo Gómez Maroño; Sobrinos, Nieves, Pilar, Carmen, Fina y Gloria Viqueira Gómez, Tania Fernández Gómez, José, Encarnación, María y Manuel Suárez Gómez, Antonio Cao Gómez y José Gómez Pedreira; Sobrinos políticos, Bisobrinos, Primos y demás familia.</p> <p style="text-align: left">Ruegan una oración por su alma y agradecen la asistencia al funeral de aniversario que por su eterno descanso se celebrará <strong>el Sábado día 13 de Septiembre a las CINCO Y MEDIA de la tarde, en la Iglesia parroquial de SANTA EULALIA DE SENRA.</strong></p> <p style="text-align: left">Favores por los que anticipan las más expresivas gracias.</p> <p style="text-align: left"> </p> <p style="text-align: left"><strong>Senra - Oroso 13 de Septiembre de 2014.</strong></p>'; print html::trim(utf8_decode($texto), 200);
Output for git.master, git.master_jit, rfc.property-hooks
Deprecated: Function utf8_decode() is deprecated in /in/8Geii on line 76 <body><p style="text-align: center">(Vecino de Eiras - Senra)</p> <p style="text-align: center">Falleció el día 13 de Septiembre de 2013 a los 78 años de edad.</p> <p style="text-align: center"><strong>D.E.P.</strong></p> <p style="text-align: left">Su hermana, Consuelo Gómez Maroño; Sobrinos, Nieves, Pilar, Carmen, Fina y Gloria Viqueira Gómez,...</p></body>

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
41.79 ms | 402 KiB | 8 Q