PHP ha una vasta scelta di funzioni integrate per la gestione delle stringhe che permettono di manipolarle facilmente in quasi ogni modo possibile. Tuttavia, imparare tutte queste funzioni, ricordando quello che fanno e quando potrebbero tornare utili, può essere un po scoraggiante, soprattutto per i nuovi sviluppatori.
Non c’è modo che io possa coprire tutte le funzioni per le stringhe in un post; inoltre, questo è quello che c’è nel manuale di PHP! Ma ciò che voglio scrivere è su cosa si dovrebbe sapere per lavorare con alcune delle funzioni più comunemente utilizzate per manipolazione le stringhe.

Trasformazioni
Il Case
PHP offre diverse funzioni che consentono di manipolare il case dei caratteri all’interno di una stringa, senza dover elaborare la stringa carattere per carattere. Perché importa di questo? Beh, forse si vuole garantire che un determinato testo sia tutto in maiuscolo, come acronimi, titoli, per enfatizzare o semplicemente per controllare che i nomi siano capitalizzati in modo corretto. O forse volete solo per confrontare due stringhe e si vuole garantire che le lettere che si sta’ confrontando siano dello stesso set di caratteri. Le funzioni di manipolazione dei case sono abbastanza facili da usare, basta passare la stringa come parametro alla funzione e il valore di ritorno sarà una stringa con caratteri maiuscoli o viceversa.
Se si vuole garantire che tutte le lettere in una stringa specifica siano in maiuscole, è possibile utilizzare la funzione strtoupper() come segue:
<?php

$stringa = "Burattino su una stringa.";
$senso = strtoupper($stringa);
echo $senso;

// Visualizza: BURATTINO SU UNA STRINGA.

?>

È forse ovvio, ma vale ancora la pena notare che i numeri e altri caratteri non alfabetici, non saranno convertiti.
Come si può intuire, la funzione strtolower() fa esattamente l’opposto della funzione strtoupper(), cioè converte la stringa con tutte le lettere minuscole.
<?php

$stringa = "BURATTINO SU UNA STRINGA.";
$senso = strtolower($stringa);
echo $senso;

// Visualizza: burattino su una stringa.

?>
Ci possono essere altre volte quando si vuole garantire la visualizzazione di certe parole, come ad esempio nomi o titoli, solo con la prima lettera di ogni parola in maiuscolo. Per questo si può utilizzare la funzione ucwords().
<?php

$stringa = "un nodo";
$senso = ucwords($stringa);
echo $senso;

// Visualizza: Un Nodo

?>
È anche possibile manipolare il case nella sola prima lettera di una stringa utilizzando le funzioni lcfirst() e ucfirst(). Se si desidera che la prima lettera sia minuscola, utilizzare la funzione lcfirst(). Se si desidera che la prima lettera sia maiuscola, utilizzare la funzione ucfirst(). La funzione ucfirst() è probabilmente la più utile in quanto è possibile utilizzarla per garantire che una certa frase inizi sempre con una lettera maiuscola.
<?php

$stringa = "quanto è lungo un pezzo di stringa?";
$senso = ucfirst($stringa);
echo $senso;

// Visualizza: Quanto è lungo un pezzo di stringa?

?>
Sostituzioni
Scambi di parole
Diamo un’occhiata alla sostituzione di un pezzo di stringa con qualcos’altro. Per il quale è possibile utilizzare la funzione str_replace(). Ciò è ideale per situazioni in cui si vogliono solo scambiare istanze di parole specifiche o un insieme di caratteri di una stringa e sostituirle con qualcos’altro:
<?php

$mia_stringa = "Il gatto era nero";
$nuova_stringa = str_replace("nero", "bianco", $mia_stringa);
echo $nuova_stringa;

// Visualizza: Il gatto era bianco

?>
È inoltre possibile utilizzare gli array per le campionature con la funzione str_replace(), se si desidera sostituire più valori.
<?php

$america = array("rossa", "bianca", "blu");
$germania = array("nera", "rossa", "gialla");
$mia_stringa  = "La bandiera era rossa bianca e blu.";
$nuova_stringa = str_replace($america, $germania, $mia_stringa);
echo $nuova_stringa;

// Visualizza: La bandiera era nera rossa e gialla.

?>
str_replace() è case-sensitive, ma se non ci si vuole preoccupare, magari perché potrebberoesserci dei caratteri imprevisti, è possibile utilizzare la funzione sorella ch’è case-insensitive, str_ireplace().
Una trim veloce
A volte si ha bisogno di una stringa pulita a suoi margini. Possono esserci spazi o altri caratteri, all’inizio o alla fine della stringa, candidati alla rimozione. Lo spazio può essere un carattere di spazio reale, ma possono anche esserci delle tabulazioni o ritorno a capo, ecc. Un esempio di quando potrebbe essere necessario fare qualcosa di simile è quando si lavora con l’input dell’utente e si vuole ripulire i dati prima di iniziare la sua elaborazione. La funzione trim() in PHP ci permette di fare proprio questo, è possibile passare la stringa come parametro e tutti gli spazi vuoti all’inizio e alla fine della stringa, verranno rimossi.
<?php

$stringa = "  Un pezzo di stringa?  ";
var_dump($stringa);

// Visualizza: string(24) " Un pezzo di stringa? "

$trimmata = trim($stringa);
var_dump($trimmata);

// Visualizza: string(20) "Un pezzo di stringa?"

?>
trim() è anche multi-funzionale nel senso che, oltre alla stringa si può anche passare un insieme di caratteri per consentire di eliminare le corrispondenze all’inizio e/o alla fine della stringa.
<?php

$stringa = "I tre moschettieri!";
$trimmata = trim($stringa, "I!");
var_dump($trimmata);

// Visualizza: string(17) " tre moschettieri"

?>
C’è da stare attenti quando si lavora con questi caratteri aggiuntivi visto che trim() rimuovere lo spazio vuoto solo se si specifica come uno dei caratteri che si desidera rimuovere.
<?php

$stringa = "I tre moschettieri!";
$trimmata = trim($stringa, "I !");
var_dump($trimmata);

// Visualizza: string(16) "tre moschettieri"

?>
Anche se trim() rimuove solo i caratteri all’inizio e alla fine di una stringa, nell’esempio di prima ha rimosso sia “I” che lo spazio perché quando “I” viene rimosso lo spazio diventa il nuovo inizio della stringa, e così viene anche rimosso.
Ci sono anche le funzioni ltrim() e rtrim() in PHP che sono simili alla funzione trim() ma solo rimuovono gli spazi vuoti (o altri caratteri specificati) dalla sinistra e dalla destra della stringa rispettivamente.
Ritagli
Quanto è lunga la stringa?
Molto spesso quando si lavora con le stringhe, vorrete sapere quanto è lunga. Per esempio, quando si tratta di un modulo (form), si può avere un campo in cui si desidera che gli utenti non possano andare oltre un certo numero di caratteri. Per contare il numero di caratteri di una stringa, è possibile utilizzare la funzione strlen().
<?php

$stringa = "Quanto è lunga la stringa?";
$misura = strlen($stringa);
echo $misura;

// Visualizza: 26

?>
Tagliare stringhe a misura
Un’altra situazione comune è quella di trovare un testo specifico all’interno di una determinata stringa e “tagliarla fuori” in modo da poter fare qualcos’altro con esso. Per tagliare una stringa è necessario un buon paio di forbici, e in PHP la forbice è la funzione substr().
Per utilizzare la funzione substr(), si passa la stringa che si desidera elaborare come parametro insieme ad un numero intero positivo o negativo. Il numero determina dove potrete iniziare a tagliare la stringa; con lo zero si inizia dal primo carattere della stringa (ricordate che quando si contano le posizioni in una stringa, il primo carattere a sinistra inizia con la posizione 0 e non la posizione 1).
<?php

$stringa = "Come tagliare una stringa a misura";
$ritaglio = substr($stringa, 14);
echo $ritaglio;

// Visualizza: una stringa a misura

?>
Quando si utilizza un numero negativo, substr() inizierà a contare a ritroso a partire dalla fine della stringa.
<?php

$stringa = "Come tagliare una stringa a misura";
$ritaglio = substr($stringa, -8);
echo $ritaglio;

// Visualizza: a misura

?>
Un terzo parametro opzionale in substr() è la lunghezza: un valore intero che consente di specificare il numero di caratteri che si desidera estrarre dalla stringa.
<?php

$stringa = "Come tagliare una stringa a misura";
$ritaglio = substr($stringa, 18, 7);
echo $ritaglio;

// Visualizza: stringa

?>
Se avete bisogno di trovare solo la posizione di un particolare pezzo di testo all’interno di una stringa e non altro, è possibile utilizzare la strpos() che restituisce la posizione della selezione dall’inizio della stringa. Un trucco utile, soprattutto quando non si conosce la posizione di partenza del testo da tagliare in una stringa, è quella di combinare le due funzioni. Anziché specificare una posizione di partenza come un intero, è possibile cercare tale posizione da una parte specifica del testo.
<?php

$stringa = "Come tagliare una stringa a misura";
$ritaglio = substr($stringa, strpos($stringa, "stringa"), 7);
echo $ritaglio;

// Visualizza: stringa

?>
Riassunto
In questo post c’è solo un assaggio di alcune delle cose che si possono fare con le stringhe in PHP. Ho davvero a malapena scalfito la punta di un iceberg! Il posto migliore per sapere di più su tutte le diverse funzioni per le stringhe è quello di leggere la pagina String Functions del manuale PHP.
Similari
Gestire le date in italiano con PHP
11% Php
Usare la funzione date() per manipolare le date con il formato convenzionale è più che sufficente. Quando si tratta, però, di gestire le date in un’altro linguaggio che non sia l’inglese (l’italiano per esempio), comincia …
Come rimuovere i caratteri No ASCII da una stringa
9% Php
In un lavoro che sto’ facendo, un cliente mi fornisce i suoi aggiornamenti attraverso un file in formato csv estratto dall’applicazione Excel della Microsoft. Ora ottenere i dati che servono da questo file prodotto da M$ n…
Problemi con il BOM dell’UTF8
7% Php
Diventa un rompicapo, se si ha il BOM UTF8 all’inizio del file PHP, XML o javascript. Questi files devono inviare la loro intestazione prima di ogni altra cosa. A causa della posizione del BOM, che sono i primi bytes del f…
Frammenti utili in PHP
7% Php
Se i frammenti di tipo PHP abbondano su Internet, allora perché scriverne un altro? Beh, i frammenti PHP trovati al giro sono generalmente zoppi. Frammenti che generano una stringa casuale o un ritorno di $_SERVER[“REMOTE_…
Correggere gli errori di ereg in PHP 5.3
6% Php
Se avete fatto l’aggiornamento a PHP 5.3, ci sono alte probabilità che ci saranno alcuni avvisi o messaggi di funzioni deprecate, in alcuni casi ferma totalmente lo script. Un esempio è la famiglia di funzioni ereg, che so…