<?php
class Html{
protected
$reachedLimit = false,
$totalLen = 0,
$maxLen = 25;
public static function trim($html, $maxLen = 25){
$dom = new DomDocument();
$dom->loadHTML($html);
$html = new static();
$html->walk($dom, $maxLen);
// remove wrapper tags added by DD (doctype, html...)
// http://stackoverflow.com/a/6953808/1058140
$dom->removeChild($dom->firstChild);
$dom->replaceChild($dom->firstChild->firstChild->firstChild, $dom->firstChild);
return $dom->saveHTML();
}
protected function walk(DomNode $node, $maxLen){
// remove any nodes that passed our limit
if($this->reachedLimit){
$node->parentNode->removeChild($node);
return;
}
// only text nodes should have text,
// so do the splitting here
if($node instanceof DomText){
$this->totalLen += $nodeLen = strlen($node->nodeValue);
if($this->totalLen > $maxLen){
$node->nodeValue = substr($node->nodeValue, 0, $nodeLen - ($this->totalLen - $maxLen));
$this->reachedLimit = true;
}
}
if(!$node->hasChildNodes())
return;
// if node has children, walk its child elements
foreach($node->childNodes as $child)
$this->walk($child, $maxLen);
}
}
print html::trim('<p>I can haz <strong> html trim </strong>', 14);
Parse error: syntax error, unexpected T_STATIC, expecting T_STRING or T_VARIABLE or '$' in /in/4Mma6 on line 18
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_STATIC, expecting T_STRING or T_VARIABLE or '$' in /in/4Mma6 on line 18
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/4Mma6 on line 7
Process exited with code 255.
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/4Mma6 on line 7
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/4Mma6 on line 7
Process exited with code 255.