Ho fatto una funzione che, quando faccio una ricerca, ingrassa le parole chiave trovate nel testo:
Codice PHP:
$q=$_GET["q"]; // parole chiave (anche più di una)
function evidenzia($tringa){
global $q; //ficco la variabile nella funzione
$qer = explode(" ", $q); // BOOM
foreach ($qer as $qq ) { $tringa=str_replace($qq, "[b]$qq[/b]", $tringa);}; // ogni chiave che trovo nel testo, la ingrasso
return $tringa;};
// cerco nel database, recupero campi, ecc.
// stampo risultati:
echo evidenzia($testo);
funziona!! che bello!
==== Problema ====
Se il testo é in formato html, rischio di mettere un tag nel tag:
Se la parola chiave ($q) é "re", rischio che nel testo trovato, la funzione evidenzia mi restituisca:
codice:
HTML
<a href="www.html.it">HTNL</a>
spero che si veda coretto...
==== Soluzione ====
Come faccio? Stavo pensando ad una funzione che dica:
Se dopo l'occorrenza "ar" trovi un tag di chiusura prima di uno di apertura, non mettere il grassetto
Oppure:
Se prima dell'occorrenza "ar" trovi un tag di apertura prima di uno di chiusura, non mettere il grassetto
(che poi, sostanzialmente é la stessa cosa...
)
==== Aiuto ====
C'é una funzione che mi permette questo?
P.S. il tag B é deprecato. Meglio usare STRONG
P.P.S. A me piace di più B
==== Parole chiave ====
Evidenziare risultati di ricerca
motore di ricerca
chiavi evidenziate