Luca Bigon
a- a+

Funzione taglia stringhe

La programmazione funzionale è di enorme importanzanella creazione di un programma o, come nel nostro caso, discript 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 lanostra seconda funzione scritta in PHP.
Nel primo tutorial abbiamo visto come tenere traccia delnumero di visitatori che accedono al nostro sito senzaappoggiarsi a un database. Quest’oggi vedremo unafunzione leggermente più semplice ma comunque moltoutile: limitare il numero di caratteri di una stringa.
A cosa cipotrà servire questa funzione? Beh un esempiochiarissimo lo potete vedere nella home page diWebMasterPoint.org e precisamente nel riquadro riservato allenews. In un sito con una template predefinita èimportantissimo mantenere il controllo sui contenuto generatidinamicamente. Ed ecco che quindi questa funzione cipuò risultare molto utile.

Strutturazione della funzione.
Prima di tutto bisogna valutare quali saranno i parametri iningresso della funzione e quali saranno invece i parametrirestituiti.
Nella nostra prima funzione ci limiteremo a recuperare lastringa e a tagliarla dopo 10 caratteri (valore variabilestabilito all’interno della funzione). La funzioneovviamente restituirà la stringa elaborata priva deicaratteri 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 $maxCaratteriif($caratteri > $maxCaratteri) {return substr($testo, 0, $maxCaratteri)."...";} else {return $testo;}}?>

Esaminiamo la funzione.
Come potete vedere la variabile maxCaratteri imposta ilnumero massimo di caratteri da stampare. La variabilecaratteri invece contiene il risultatodell’elaborazione della funzione strlen($testo).
La funzione strlen() restituisce il numero di caratteri diuna stringa; nel nostro caso specifichiamo di contare ilnumero di caratteri presenti nella variabile testo passataalla funzione per copia.
Nella funzione troviamo un’istruzione di controllo if;in poche parole verifichiamo se i caratteri della stringasono maggiori di quelli da noi impostati. Se ciòaccade restituiamo i primi 10 caratteri della stringa seguitida tre punti (…), altrimenti restituiamo la variabiletesto come ci è stata passata.
Vediamo ora come richiamare questa funzione.
Per prima cosa creeremo una variabile di tipo stringa con ilseguente valore: “WebMasterPoint.org, il punto diriferimento per i webmaster italiani”.
Successivamente passeremo la variabile alla funzionetagliaStringa() e salveremo il risultato nella variabilerisultato. 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 $risultatoecho $risultato;?>

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

Passiamo ora al secondo livello di difficoltà.Perché non fare in modo che la variabile maxCaratterisia settata per default a 10 ma, nel caso sia specificatocome valore di ingresso della funzione, assumi il valorepassato?
Quale utilità potrebbe avere questa modifica? Provatea pensarci un pò. Supponete di avere due celle unapiù grande dell’altra. La prima richiama le newsdal database e mantiene la corretta formattazione fino a 15caratteri (esclusi gli eventuali tre puntini finali) e laseconda mantiene la corretta formattazione fino a 8caratteri. Cosa fare?
Molti programmatori alle prime armi sarebbero tentati a fareuna copia della funzione tagliaStringa() e chiamarla,perché no, tagliaStringa2(); la prima funzione hasettata la variabile maxCaratteri a 15 mentre la seconda hasettata la variabile maxCaratteri a 8.
Certo è giusto sintatticamente parlando ma non perquanto riguarda una corretta programmazione funzionale.Perché fare due funzioni che svolgono lo stesso lavoroquando 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 $maxCaratteriif($caratteri > $maxCaratteri) {return substr($testo, 0, $maxCaratteri)."...";} else {return $testo;}}?>

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

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

Quindi non viene più assegnato il valore 10 allavariabile maxCaratteri all’interno della funzione,bensì il valore della variabile viene passato percopia alla funzione in questo modo:
function tagliaStringa($testo, $maxCaratteri = 10)
Come potete vedere la variabile $testo è obbligatoriamentre la variabile $maxCaratteri è facoltativa. Seviene specificato assume il valore desiderato altrimentiassume 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 $risultatoecho $risultato;?>

Provate a eseguire questo. E’ visibilmente uguale aquello usato prima; infatti restituisce anche lo stessorisultato, cioè restituisce i primi 10 caratteriseguiti 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 $risultatoecho $risultato;?>

Questa volta abbiamo aggiunto un nuovo parametro allafunzione. Si tratta del secondo parametro, che viene salvatonella variabile $maxCaratteri. Così facendo diciamo alnostro script di stampare solo le prime due lettere dellastringa, seguite dai tre puntini.

Se avete problemi a far funzionare questo script non esitatea postare nel nuovo forum di webmasterpoint.org nella sezionePHP.



Ti potrebbe interessare anche

commenta la notizia