Luca Bigon
a- a+

Funzione taglia stringhe

La programmazione funzionale è di enorme importanza nella creazione di un programma o, come nel nostro caso, di script scritti nel linguaggio lato-server PHP.
Ecco alcuni vantaggi nell’uso delle funzioni:

  1. Riusabilità del codice
  2. Maggiore chiarezza del codice
  3. Maggiore facilità nel trovare e correggere eventuali bug

Basandoci su questi tre punti andiamo oggi a sviluppare la nostra seconda funzione scritta in PHP.
Nel primo tutorial abbiamo visto come tenere traccia del numero di visitatori che accedono al nostro sito senza appoggiarsi a un database. Quest’oggi vedremo una funzione leggermente più semplice ma comunque molto utile: limitare il numero di caratteri di una stringa.
A cosa ci potrà servire questa funzione? Beh un esempio chiarissimo lo potete vedere nella home page di WebMasterPoint.org e precisamente nel riquadro riservato alle news. In un sito con una template predefinita è importantissimo mantenere il controllo sui contenuto generati dinamicamente. Ed ecco che quindi questa funzione ci può risultare molto utile.

Strutturazione della funzione.
Prima di tutto bisogna valutare quali saranno i parametri in ingresso della funzione e quali saranno invece i parametri restituiti.
Nella nostra prima funzione ci limiteremo a recuperare la stringa e a tagliarla dopo 10 caratteri (valore variabile stabilito all’interno della funzione). La funzione ovviamente restituirà la stringa elaborata priva dei caratteri in eccesso.

Il codice.

    function tagliaStringa($testo) {
# CONFIGURAZIONE
# imposto il numero massimo di caratteri da visualizzare
# esclusi i (...) finali
$maxCaratteri = 10;
# SCRIPT
# salvo il numero di caratteri della stringa passata
$caratteri = strlen($testo);
# controllo se $caratteri è maggiore di $maxCaratteri
if($caratteri > $maxCaratteri) {
return substr($testo, 0, $maxCaratteri)."...";
} else {
return $testo;
}
}
?>

Esaminiamo la funzione.
Come potete vedere la variabile maxCaratteri imposta il numero massimo di caratteri da stampare. La variabile caratteri invece contiene il risultato dell’elaborazione della funzione strlen($testo).
La funzione strlen() restituisce il numero di caratteri di una stringa; nel nostro caso specifichiamo di contare il numero di caratteri presenti nella variabile testo passata alla funzione per copia.
Nella funzione troviamo un’istruzione di controllo if; in poche parole verifichiamo se i caratteri della stringa sono maggiori di quelli da noi impostati. Se ciò accade restituiamo i primi 10 caratteri della stringa seguiti da tre punti (…), altrimenti restituiamo la variabile testo come ci è stata passata.
Vediamo ora come richiamare questa funzione.
Per prima cosa creeremo una variabile di tipo stringa con il seguente valore: “WebMasterPoint.org, il punto di riferimento per i webmaster italiani”.
Successivamente passeremo la variabile alla funzione tagliaStringa() e salveremo il risultato nella variabile risultato. In fine stamperemo il valore della variabile.

    # assegniamo la stringa alla variabile $stringa
$stringa = “WebMasterPoint.org, il punto di riferimento per i webmaster italiani”;
# passiamo per copia il valore di stringa alla funzione tagliaStringa();
$risultato = tagliaStringa($stringa);
# stampiamo il valore di $risultato
echo $risultato;
?>

Ora provate a sostituire il valore della variabile stringa con “prova” (senza le virgolette!!).

Passiamo ora al secondo livello di difficoltà. Perché non fare in modo che la variabile maxCaratteri sia settata per default a 10 ma, nel caso sia specificato come valore di ingresso della funzione, assumi il valore passato?
Quale utilità potrebbe avere questa modifica? Provate a pensarci un pò. Supponete di avere due celle una più grande dell’altra. La prima richiama le news dal database e mantiene la corretta formattazione fino a 15 caratteri (esclusi gli eventuali tre puntini finali) e la seconda mantiene la corretta formattazione fino a 8 caratteri. Cosa fare?
Molti programmatori alle prime armi sarebbero tentati a fare una copia della funzione tagliaStringa() e chiamarla, perché no, tagliaStringa2(); la prima funzione ha settata la variabile maxCaratteri a 15 mentre la seconda ha settata la variabile maxCaratteri a 8.
Certo è giusto sintatticamente parlando ma non per quanto riguarda una corretta programmazione funzionale. Perché fare due funzioni che svolgono lo stesso lavoro quando se ne può fare solo una?

Il codice.

    function tagliaStringa($testo, $maxCaratteri = 10) {
# SCRIPT
# salvo il numero di caratteri della stringa passata
$caratteri = strlen($testo);
# controllo se $caratteri è maggiore di $maxCaratteri
if($caratteri > $maxCaratteri) {
return substr($testo, 0, $maxCaratteri)."...";
} else {
return $testo;
}
}
?>

Esaminiamo la funzione.
Come potete vedere abbiamo eliminato tutta questa parte di codice:

    # CONFIGURAZIONE
# imposto il numero massimo di caratteri da visualizzare
# esclusi i (...) finali
$maxCaratteri = 10;

Quindi non viene più assegnato il valore 10 alla variabile maxCaratteri all’interno della funzione, bensì il valore della variabile viene passato per copia alla funzione in questo modo:
function tagliaStringa($testo, $maxCaratteri = 10)
Come potete vedere la variabile $testo è obbligatoria mentre la variabile $maxCaratteri è facoltativa. Se viene specificato assume il valore desiderato altrimenti assume il valore 10 (valore di default)
Vediamo ora come richiamare questa nostra nuova funzione.

    # assegniamo la stringa alla variabile $stringa
$stringa = “WebMasterPoint.org, il punto di riferimento per i webmaster italiani”;
# passiamo per copia il valore di stringa alla funzione tagliaStringa();
$risultato = tagliaStringa($stringa);
# stampiamo il valore di $risultato
echo $risultato;
?>

Provate a eseguire questo. E’ visibilmente uguale a quello usato prima; infatti restituisce anche lo stesso risultato, cioè restituisce i primi 10 caratteri seguiti dai tre puntini. Provate ora a scrivere questo:

    # assegniamo la stringa alla variabile $stringa
$stringa = “WebMasterPoint.org, il punto di riferimento per i webmaster italiani”;
# passiamo per copia il valore di stringa alla funzione tagliaStringa();
$risultato = tagliaStringa($stringa, 3);
# stampiamo il valore di $risultato
echo $risultato;
?>

Questa volta abbiamo aggiunto un nuovo parametro alla funzione. Si tratta del secondo parametro, che viene salvato nella variabile $maxCaratteri. Così facendo diciamo al nostro script di stampare solo le prime due lettere della stringa, seguite dai tre puntini.

Se avete problemi a far funzionare questo script non esitate a postare nel nuovo forum di webmasterpoint.org nella sezione PHP.



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Luca
Ti è piaciuto l'articolo?