Spesso ci troviamo nella necessità di estrarre solo un pezzo di stringa da una frase: capita nelle anteprime delle news, dove vengono mostrati soltanto i primi ducento o trecento caratteri. Ma potremmo anche aver bisogno di scoprire se una certa stringa è contenuta in un’altra, per esempio durante una ricerca fatta dall’utente.
PHP mette a disposizione numerose funzioni per formattare una stringa.
Le stringhe (non gli interi) vengono trattate da PHP come se fossero degli array. Per estrarre la prima “u” dalla frase “Questa è una stringa”, potremmo quindi stamparla a video in questo modo:
1 2 |
$stringa = "Questa è una stringa"; echo $stringa[1]; //gli array partono a conteggiare le posizioni da 0 |
La funzione substr()
In genere, però, abbiamo bisogno di una funzione più versatile, che ci permetta di estrarre una certa stringa in modo dinamico. Ecco che ci arriva in aiuto la funzione substr()
. Per estrarre i primi sei caratteri (“Questa”) della stringa precedente:
1 |
echo substr($stringa, 0, 6); |
In parole povere:
– come primo parametro passiamo la stringa in cui ricercare;
– come secondo parametro la posizione da cui iniziare la ricerca (a partire da 0);
– come terzo parametro il numero di caratteri da prendere.
Il terzo parametro è facoltativo: se avessi scritto:
1 |
echo substr($stringa, 6); |
avremmo estratto la parte di stringa che va dal settimo carattere fino a fine stringa (” è una stringa”).
L’utilità di questa funzione sarà evidente quando la posizione di partenza e il numero di caratteri da estrarre dovrà cambiare dinamicamente, per esempio all’interno di un ciclo while
.
La funzione strstr()
Un’altra utile funzione è strstr()
: cerca una stringa all’interno di un’altra stringa e, in caso la trovi, restituisce la prima stringa dal punto in cui è stata trovata la seconda stringa. In caso la ricerca non abbia esito, invece, restituisce false. Se per esempio scriviamo:
1 |
echo strstr($stringa, "una"); |
avremo a video “una stringa”.
Una funzione simile è stristr()
, con la sola differenza che quest’ultima non tiene conto di maiuscole o minuscole.