Esta es la función:
Código PHP:
function marker($words,$body){
$patterns = array();
$replacements = array();
$no_replacements=array("de","la", "en", "el", "da","di","e","i");
foreach ($words as $i => $word) {
$patterns[] = '/' . preg_quote($word) .'/i';
$replacements[] = "<span class='marker'>\\0</span>";
}
//<span style=\"color:blue; background-color:yellow;\">".$arg."</span>
// Split up the page into chunks delimited by a
// reasonable approximation of what an HTML element
// looks like.
$parts = preg_split("{(<(?:\"[^\"]*\"|'[^']*'|[^'\">])*>)}",
$body,
-1, // Unlimited number of chunks
PREG_SPLIT_DELIM_CAPTURE);
foreach ($parts as $i => $part) {
// Skip if this part is an HTML element
if (isset($part[0]) && ($part[0] == '<'))
{ continue; }
// Wrap the words with <span/>s
$parts[$i] = preg_replace($patterns, $replacements, $part);
}
// Reconstruct the body
$body = implode('',$parts);
return $body;
}
Que me retorna el texto con las coincidencias resaltadas.
Un ejemplo de uso seria:
$word=array("naci","en","Ciudad");
$valor = marker ($word,$bod);
echo $valor;
Código PHP:
if (!in_array($no_replacements,$parts))
{
foreach ($parts as $i => $part) {
// Skip if this part is an HTML element
if (isset($part[0]) && ($part[0] == '<'))
{ continue; }
// Wrap the words with <span/>
$parts[$i] = preg_replace($patterns, $replacements, $part);
}
}
Alguien me puede indicar en que parte del codigo estoy mal?.
Gracias.