Spesso per problemi di spazio, si vorrebbe limitare il testo che compare in uno specifico div, testo recuperato da un database magari. Php ha un’ apposita funzione substr() che provvede a tagliare una stringa, una volta superata una lunghezza prefissata.
Facciamo un esempio per capire meglio come utilizzarla e in modo che tutto sia più chiaro.
Ammettiamo che io abbia una stringa del tipo:
$stringa= "Oggi è il mio compleanno. E' vero!"
Ma ho poco spazio per tutto questo testo, vorrei quindi che venissero visualizzati soltanto i primi 20 caratteri.
La funzione substr() ha tre parametri:
- La stringa da limitare
- Il carattere da cui iniziare il conto
- I caratteri da visualizzare
Quindi per visualizzare i primi 20 caratteri della mia stringa partendo dal primo possiamo scrivere:
$stringa_da_visualizzare = substr($stringa, 0, 20);
Purtroppo questa funzione lavora sui caratteri, quindi non riconosce le parole e quando finisce di contare i caratteri da visualizzare, se la parola non è completa, la tronca.
La soluzione non è molto complicata, possiamo creare una nuova funzione che evita lo spiacevole inconveniente.
function substrwords($text,$maxchar,$end='...'){
if(strlen($text)>$maxchar){
$words=explode(" ",$text);
$output = '';
$i=0;
while(1){
$length = (strlen($output)+strlen($words[$i]));
if($length>$maxchar){
break;
}else{
$output = $output." ".$words[$i];
++$i;
};
};
}else{
$output = $text;
}
return $output.$end;
}
Questa funzione non fa altro che suddividere il testo in parole e contare i caratteri delle singole parole. Quando il numero dei caratteri da visualizzare viene superato, se la parola in cui si sta contando non è terminata allora la funzione la esclude dalla visualizzazione.
La funzione può essere richiamata in questo modo:
echo substrwords($string,20);
e stamperà “Oggi è il mio compleanno…”







