PHP: anteprima del testo
13/02/2012Una comodissima funzione per estrarre da un testo una breve anteprima di un numero di caratteri deciso diversamente ad ogni chiamata, ripulendo il testo stesso dagli eventuali tag html per impedire che il 'taglio' cada dentro un tag o prima della chiusura dello stesso, con nefaste conseguenze su tutto il resto dell'impaginato html.
La funzione permette inoltre di decidere di volta in volta se aggiungere alla fine del testo tagliato i classici tre puntini (o altro simbolo / carattere).
La chiamata della funzione quindi va fatta fornendo tre parametri:
echo anteprima($testo, '130', false);
Il primo parametro è il testo da tagliare, il secondo il numero di caratteri da prelevare, il terzo può esser true se si si vuol aggiungere un simbolo come i tre puntini, false se non lo si vuol fare.
Ecco la funzione:
function anteprima($testo, $lunghezza, $puntini) {
$ellipses = $puntini;
// eliminazione tag
$testo = strip_tags($testo);
// se il testo è già più corto della lunghezza massima viene restituito pulito dai tag
if (strlen($testo) <= $lunghezza) {
return $testo;
}
// cerca l'ultimo spazio per non restituire parole tagliate
$ultimo_spazio = strrpos(substr($testo, 0, $lunghezza), ' ');
$ant = substr($testo, 0, $ultimo_spazio);
// aggiunge i ... ad indicare che segue
if ($ellipses) {
$ant .= '...';
}
// restituisce l'anteprima pulita dai tag e del numero di caratteri massimo
return $ant;
}