Php Basic: Come limitare la lunghezza del testo

di nemoprincess
Pubblicato October 27th, 2009 at 10:05 am

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:

1
$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:

  1. La stringa da limitare
  2. Il carattere da cui iniziare il conto
  3. I caratteri da visualizzare

Quindi per visualizzare i primi 20 caratteri della mia stringa partendo dal primo possiamo scrivere:

1
$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.

01
02
function substrwords($text,$maxchar,$end='...'){
03
 if(strlen($text)>$maxchar){
04
  $words=explode(" ",$text);
05
  $output = '';
06
  $i=0;
07
  while(1){
08
   $length = (strlen($output)+strlen($words[$i]));
09
   if($length>$maxchar){
10
    break;
11
   }else{
12
    $output = $output." ".$words[$i];
13
    ++$i;
14
   };
15
  };
16
 }else{
17
  $output = $text;
18
 }
19
 return $output.$end;
20
}

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:

1
echo substrwords($string,20);

e stamperà “Oggi è il mio compleanno…”

Ti interessa un link gratuito da una directory con Pagerank 4???? Segnala il tuo sito su Zibaldone! La directory gratuita di Web 3.0 Notes!

Popularity: 1% [?]

Altri articoli interessanti:

Tags:
2 CommentiLascia un commento
  • Zave (2 comments)
    28 October, 2009 at 11:15 am

    Ciao, sto imparando ora i rudimenti del php e questa funzione è esattamente quello che stavo cercando!
    Un’unico problema: i puntini vengono messi alla fine di ogni stringa, indipendentemente dal fatto che sia stata “tagliata” o meno..
    Sto cercando di correggerla, ma sono ancora in alto mare eheh

    Grazie
    Davide

  • Zave (2 comments)
    28 October, 2009 at 11:22 am

    @Zave – Ok, penso di esserci riuscito ;)

    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{
    $end='';
    $output = $text;
    }
    return $output.$end;
    }

Aggiungi un commentoCrea un gravatar

* Name

* Email Address

Website Address

Puoi usare questi tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Sponsors
Socializziamo!

AAA: Collaboratori cercasi
Se sei un appassionato di informatica e in particolar modo ti affascinano wordpress, photoshop e il seo, allora stiamo cercando proprio Te!
Web 3.0 Notes vuole crescere e sta cercando collaboratori seri che vogliano crescere insieme.
Ovviamente le collaborazioni saranno retribuite e la paternità dei post sarà sempre riconosciuta!
Contattateci pure per ogni info!
Web 3.0 Notes
Partners
Partners
Cerca nel blog
Progetti Amici

Categorie
Get Adobe Flash playerPlugin by wpburn.com wordpress themes