Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 22 di 67
  • livello intermedio
Indice lezioni

Le funzioni di PHP per gestire le stringhe

Le funzioni di PHP per modificare, spezzettare, effettuare ricerche ed altre operazioni sulle stringhe: strlen, str_replace, trim, substr...
Le funzioni di PHP per modificare, spezzettare, effettuare ricerche ed altre operazioni sulle stringhe: strlen, str_replace, trim, substr...
Link copiato negli appunti

In lacune delle lezioni precedenti abbiamo utilizzato le stringhe; abbiamo visto ad esempio come assegnarle ad una variabile, come stamparle a schermo, come concatenarle tra di loro o ad altre variabili. PHP mette a disposizione un set completo di funzioni che permettono di manipolare ed eseguire le operazioni su di esse. In questo articolo verranno analizzate quelle utilizzate più frequentemente.

Verificare la lunghezza di una stringa

La prima funzione descritta è probabilmente anche una delle più utilizzate. Per verificare la lunghezza di una stringa possiamo ricorrere alla funzione strlen() che restituirà il numero dei caratteri che la compongono spazi inclusi:

$stringa = 'Stringa di esempio';
echo strlen($stringa); // restituirà 18

Restituire una porzione di una stringa

Un'altra operazione molto comune che si effettua con le stringhe consiste nell'estrarne una parte. Immaginiamo, ad esempio, di voler estrarre i vari elementi di una data, possiamo utilizzare la funzione substr() che prende in ingresso 3 parametri:

Parametro Descrizione
$string Una stringa.
$start Carattere di iniziale, 0 di default. Consente di utilizzare un intero negativo per recuperare la porzione di stringa a partire dalla fine anziché dall'inizio.
$length Numero di caratteri. Opzionale, se omesso viene restituita tutta la stringa a partire dal carattere iniziale. Consente di utilizzare un intero negativo, in quel caso ometterà length caratteri dalla fine della stringa.

Analizziamo alcuni esempi a riguardo:

$data = '01/02/2016';
$giorno = substr($data, 0, 2); // 01
$mese   = substr($data, 3, 2); // 02
$anno   = substr($data, 6);    // 2016
$giorno = substr($data, -10, 2); // 01
$mese   = substr($data, -7, 2); // 01
$anno   = substr($data, -4, 4); // 01

Cercare una porzione di testo all'interno di una stringa

Spesso si ha la necessità di verificare se una stringa contiene una sottostringa. In questi casi possiamo utilizzare la funzione strpos() che restituisce la posizione della prima occorrenza della stringa ricercata oppure false nel caso non venga trovata alcuna occorrenza. 3parametri in ingresso:

Parametro Descrizione
$haystack La stringa su cui effettuare la ricerca.
$needle La porzione di stringa da ricercare.
$offset Default a 0, indica la posizione da cui iniziare la ricerca.

Anche in questo caso è possibile proporre alcuni esempi:

$stringa = 'La mia data di nascita è il 07 dicembre 1986';
echo strpos($stringa, '1986'); // restituirà 41 che è la posizione in cui inizia la stringa 1986
echo strpos($stringa, '1987'); // restituirà false perché non ci sono occorrenze

Vediamo come utilizzare la funzione all'interno di un costrutto if:

$stringa = 'Simone è nato nel 1986';
if (strpos($stringa, 'Simone') !== false) {
    echo 'Il tuo nome è Simone';
}

Invertire una stringa

Per effettuare l'inversione (reverse) di una stringa possiamo utilizzare la funzione strrev():

echo strrev("Hello world!"); // stamperà "!dlrow olleH"

Sostituire tutte le occorrenze di una stringa

Nel caso in cui si voglia sostituire una porzione di stringa all'interno di un'altra stringa possiamo utilizzare la funzione str_replace(), essa prende in ingresso 4 parametri:

Parametro Descrizione
$search Il valore da cercare.
$replace Il valore con cui sostituirlo.
$subject La stringa o le stringhe in cui effettuare la sostituzione.
$count Opzionale, variabile in cui memorizzare il numero di occorrenze sostituite.

Alcuni semplici esempi:

$stringa = 'Il mio nome è Simone';
echo str_replace('Simone', 'Luca', $stringa); // stamperà "Il mio nome è Luca"
$stringhe = array(
    'Il mio nome è Simone',
    'Simone è nato nel 1986'
);
str_replace('Simone', 'Luca', $stringhe); // sostituirà tutte le occorrenze di Simone con Luca all'interno dell'array

Come per il parametro $subject, anche i primi due parametri possono accogliere un array anziché una semplice stringa.

Se $search e $replace sono matrici, allora str_replace() prende i valori da ciascuna matrice e li usa per svolgere la ricerca e la sostituzione in subject. Se $replace ha meno valori di $search, allora si utilizzeranno delle stringhe vuote per completare i rimanenti valori da sostituire. Se $search è una matrice e $replace è una stringa, allora questa stringa di sostituzione sarà utilizzata per ogni valore di $search.

$stringa = 'Dovresti mangiare frutta, verdura e fibre tutti i giorni';
$cibi_sani = array('frutta', 'verdura', 'fibre');
$cibi_grassi = array('pizza', 'gelato', 'hamburger');
echo str_replace($cibi_sani, $cibi_grassi, $stringa); // stamperà "Dovresti mangiare pizza, gelato e hamburger tutti i giorni"

Suddividere una stringa

Spesso capita di dover separare una stringa in più parti in base ad un carattere separatore, ad esempio lo / nella data vista in uno degli esempi precedenti. In questo caso possiamo usare la funzione explode() che prende in ingresso 3 parametri:

Parametro Descrizione
$separator Carattere separatore.
$string Stringa da dividere.
$limit Opzionale, numero massimo di elementi da estrarre.

Un esempio:

$data = '01/02/2016';
$elementi = explode('/', $data);
    // conterrà
    // Array
    // (
    //  [0] => 01
    //  [1] => 02
    //  [2] => 2016
    // )

La corrispondente funzione con cui possiamo convertire un array in una stringa si chiama implode() che prende in ingresso 2 parametri:

Parametro Descrizione
$glue Il carattere separatore.
$pieces L'array da unire.

Vediamo come trasformare in una data l'array precedente:

$data = implode('/', $elementi); //conterrà '01/02/2016'

Modificare le maiuscole/minuscole

PHP mette a disposizione un set di funzioni per modificare le maiuscole/minuscole a seconda dell'esigenza:

Parametro Descrizione
strtoupper() Per convertire la stringa tutta in maiuscolo.
strtolower() Per convertire la stringa tutta in minuscolo.
lcfirst() Per convertire la prima lettera della stringa in minuscolo.
ucfirst() Per convertire la prima lettera della stringa in maiuscolo.
ucwords() Per convertire la prima lettera di tutte le parole in maiuscolo.

Vediamo alcuni esempi per scoprire le funzioni che ci vengono in aiuto:

$stringa = 'questa stringa contiene tutti caratteri minuscoli';
echo strtoupper($stringa); // stamperà QUESTA STRINGA CONTIENE TUTTI CARATTERI MINUSCOLI
echo ucfirst($stringa); // stamperà Questa stringa contiene tutti caratteri minuscoli
echo ucwords($stringa); // stamperà Questa Stringa Contiene Tutti Caratteri Minuscoli

Rimuovere spazi all'inizio o alla fine di una stringa

Spesso quando riceviamo delle stringhe in input abbiamo bisogno di ripulirle da spazi o altri caratteri in eccesso ad inizio o fine stringa. Le funzioni a disposizione sono:

Parametro Descrizione
trim() Per rimuovere i caratteri sia all'inizio che alla fine.
ltrim() Per rimuovere i caratteri solo a sinistra.
rtrim() Per rimuovere i caratteri solo a destra.

Vediamo qualche esempio:

$stringa = ' ciao ';
echo trim($stringa);  // stamperà 'ciao' senza spazi iniziali e finali
echo ltrim($stringa); // stamperà 'ciao ' senza spazi iniziali
echo rtrim($stringa); // stamperà ' ciao' senza spazi finali

Ti consigliamo anche