Fare l'anteprima di un articolo in automatico
Mettiamo di avere un sito con molti articoli. Questi articoli possono essere in qualche modo correlati tra loro con appositi script. L'esempio classico è il plugin che nei blog permette di mostrare in automatico i link agli articoli collegati (selezionati in automatico dalla script sulla base di alcuni parametri).
Ma se volessimo aggiungerci anche un paio di frasi a quel titolo?
Dovremmo estrarre anche il testo dal database ed intervenire su questo ad esempio in questo modo:
<?php echo substr($testo,0,200) ?>
per estrare i primi 200 caratteri di un testo...
Tuttavia sarebbe più opportuno prima eliminare tutti i tag html...
<?php
$testo = strip_tags($testo);
echo substr($testo,0,200)
?>
Ma non è finita: in questo caso le nostre frasi verrebbero comunque spezzate al 200° carattere, spezzando anche eventuali parole!
Per evitare questo facciamo così, troviamo la posizione del primo spazio dopo il 200° carattere e poi diciamo alla funzione substr dove terminare la frase:
<?php
$testo = strip_tags($testo);
$pos = strpos($testo, ' ', 200);
echo substr($testo,0,$pos)
?>
Il codice completo infine potrebbe essere ad esempio questo:
<?php
$testo = strip_tags($testo);
$testo = trim($testo);
if (strlen($testo)>=200) {
$pos = strpos($testo, ' ', 200);
if (!$pos) {$pos = strrpos($testo, ' ');}
echo substr($testo,0,$pos);
} else {
echo substr($testo,0,200);
}
?>
Per farla breve: elimina eventuali spazi dal conteggio, controlla che il testo sia effettivamente più lungo della lunghezza impostata per l'anteprima e, in caso affermativo, taglia il testo e controlla che la posizione del primo spazio dopo il 200° carattere non sia nulla (in caso non ci siano più spazi dopo il 200° carattere).



