Evidenziare automaticamente testi in php - Effetto evidenziatore

Quando si fanno delle ricerche su un database con una parola (o una frase) può essere utile evidenziare il risultato utilizzando un effetto tipo evidenziatore.

Se nella frase "ciao mondo sul mappamondo" vogliamo cercare la parola mondo, il risultato che si vuole ottenere è il seguente ciao mondo sul mappamondo

La funzione evidenzia che verrà descritta consentirà, in base a un parametro di mettere in maiuscolo il primo carattere o tutta la frase prima di fare la ricerca nel testo

funzione evidenzia(<testo da evidenziare>,<frase da cercare>),[<maiuscolare>])

<testo da evidenziare> è il testo su cui viene fatta la ricerca
<frase da cercare> è la parola (o frase) che verrà cercata
<maiuscolare>

è opzionale. Può avere i valori
"Mn" - Maiuscola il primo carattere della parola da cercare
"MM" - Trasforma tutta la frase in maiuscolo

 

Funzione

function evidenzia($stringa, $parola, $Tipo='Mm') {

if ($Tipo=='Mm') {$cercaParola=ucfirst($parola); }
else if ($Tipo=='MM') {$cercaParola=strtoupper($parola); }
else {$cercaParola=$parola;}
$nuovaparola = "<span style='background-color: #FFFF99'>".$cercaParola.'</span>';

return(str_replace($cercaParola,$nuovaparola,$stringa));
}

L'evidenziazione è ottenuta utilizzando <span style='background-color: #FFFF99'> che crea uno sfondo di colore esempio

Esempi

codice risultato
<?php echo evidenzia("ciao mondo sul mappamondo","mondo"); ?> ciao mondo sul mappamondo
<?php echo evidenzia("ciao Mondo sul mappamondo","Mondo","Mm"); ?>

 

ciao Mondo sul mappamondo
<?php echo evidenzia("ciao MONDO sul mappamondo","MONDO","MM"); ?>
ciao MONDO sul mappamondo