ciao
ho creato un piccolo parser che mi permette di scansionare un testo, riconoscervi alcune parole chiave, contenute in un database, e rimaneggiarle in modo da renderle dei collegamenti ipertestuali. il tutto funziona bene. Unico problema, se una parola chiave è parte di una parola più grande, questa viene comunque fatta diventare un link.
Esempio:
la mia parola chiave è "control".
se nel testo ho la parola "controllare", che non è evidentemente parola chiave, il parser legge comunque la parola "control" e mi modifica il testo rendendo solo quella parte un collegamento così:
controllare
ora, io vorrei che il parser non modifichi una parola a meno che non sia esattamente quella, e non faccia parte di altre parole più lunghe.
scrivo di seguito la funzione:
ho creato un piccolo parser che mi permette di scansionare un testo, riconoscervi alcune parole chiave, contenute in un database, e rimaneggiarle in modo da renderle dei collegamenti ipertestuali. il tutto funziona bene. Unico problema, se una parola chiave è parte di una parola più grande, questa viene comunque fatta diventare un link.
Esempio:
la mia parola chiave è "control".
se nel testo ho la parola "controllare", che non è evidentemente parola chiave, il parser legge comunque la parola "control" e mi modifica il testo rendendo solo quella parte un collegamento così:
controllare
ora, io vorrei che il parser non modifichi una parola a meno che non sia esattamente quella, e non faccia parte di altre parole più lunghe.
scrivo di seguito la funzione:
PHP:
// Funzione modifica testo
function scan_text($value="",$tab_key)
{
$keywords = safe_query("SELECT * FROM $tab_key");
if (mysql_num_rows($keywords)){
while($key = mysql_fetch_array($keywords)){
$indirizzo = $key['indirizzo'];
$key = str_ireplace("_"," ",$key['keyword']);
// NUCLEO DEL PARSER
$value = eregi_replace($key,"<a href=\"index.php?action=".strtolower($indirizzo)."\">".$key."</a>",$value);
}
}
return $value;
}