<?php
function applyHLToSiblings(DOMDocument $D){
$words[0] = "cart";
/*
$words[1] = "car";
$words[2] = "cartel";
$words[3] = "art";
$words[4] = "drug";
$words[5] = "drugs";
$words[6] = "rug";
$words[7] = "rugs";
*/
$mt = function($content) use($D){
return $D->createTextNode($content);
};
$ms = function($name, $content = null) use($D){
$span = $D->createElement("span");
$span->setAttribute("class", "word$name");
$content !== null ? $span->appendChild($content) : null;
return $span;
};
$ps = function($siblingsContainer, $searchString, $name) use($D, $ms, $mt){
foreach($siblingsContainer->childNodes as $node){
if($node instanceof DOMText){
if(mb_strlen($node->textContent, "UTF-8") >= mb_strlen($searchString)){
$o = mb_strpos($node->textContent, $searchString);
if($o !== false){
$l = mb_strlen($searchString, "UTF-8");
$before = mb_substr($node->textContent, 0, $o);
$wrap = mb_substr($node->textContent, $o, $l);
$after = mb_substr($node->textContent, $o + $l);
$before = $ms($name, $wrap);
$newSpan->textContent = $wrap;
$before ? $node->insertBefore($node->nextSibling, $mt($before));
$node->insertBefore($node->nextSibling, $ms($mt($wrap), $name));
$after ? $node->insertBefore($node->nextSibling, $mt($after));
}
}
}
}
};
foreach($words as $name => $word)
$ps($D->documentElement, $word, $name);
}
$x = new DOMDocument();
$x->loadXML("<data>drugs cartel</data>");
applyHLToSiblings($x);
var_dump($x->saveXML());
- Output for 5.5.24 - 5.5.30, 5.6.8 - 5.6.15
- Parse error: syntax error, unexpected ';' in /in/otsdC on line 41
Process exited with code 255.
preferences:
167.33 ms | 1395 KiB | 22 Q