Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Tutto sulle stringhe in PHP

Usare al meglio le stringhe in PHP: dalla formattazione alla visualizzazione sino alla manipolazione completa. Parte prima.
Usare al meglio le stringhe in PHP: dalla formattazione alla visualizzazione sino alla manipolazione completa. Parte prima.
Link copiato negli appunti

Con PHP risulta molto semplice manipolare le stringhe, in parte per le caratteristiche del linguaggio dotato, come è noto, di una sintassi semplice, snella e compatta. In parte per la disponibilità di una vasta libreria di funzioni che permette di svolgere con facilità le più comuni come le più complesse elaborazioni.

In questo articolo si introdurranno i concetti basilari relativi alle stringhe, per poi passare ad illustrare alcune tra le numerose funzioni, soprattutto nell'ottica dello sviluppo di applicazioni web. Gli argomenti trattati si rivolgono principalmente a chi da poco si è avvicinato a PHP, malgrado ciò qualche spunto interessante potranno trovarlo anche i programmatori un po' più esperti. L'obiettivo è fornire una breve panoramica degli strumenti messi a disposizione dal linguaggio per scrivere codice efficiente ed elegante senza "reinventare l'acqua calda".

Definire le stringhe

Con il termine stringa si intende una sequenza di caratteri: "web", "consulta freephp.html.it", "PHP rende la vita facile ai programmatori", sono semplici esempi di stringhe. Per assegnare ad una variabile un valore di tipo stringa dobbiamo utilizzare dei delimitatori che consentano di racchiudere la sequenza di caratteri desiderata. La sintassi del linguaggio fornisce varie alternative, ciascuna con proprie particolarità.

Come primo approccio possiamo delimitare la stringa mediante virgolette doppie ("):

<?php
$stringa = "Naviga su html.it";
// posso anche andare a capo
$stringa1 = "Naviga su html.it lo troverai interessante";
?>

Quando si adotta questa sintassi PHP analizza il contenuto della stringa alla ricerca di nomi di variabile individuati dal simbolo $; qualora ne trovi uno lo sostituisce automaticamente con il corrispondente valore. Questa caratteristica prende il nome di espansione dei nomi di variabile. Il codice seguente esemplifica quanto descritto:

<?php
$sito = "html.it";
// la variabile $stringa conterrà
// la stringa "Naviga su html.it"
$stringa = "Naviga su $sito";
// posso utilizzare anche la componente di un array
$arraysito[0]= "html.it";
$stringa1 = "Naviga su $arraysito[0]";
?>

Si osservi che l'automatismo della sostituzione necessita di alcuni accorgimenti se la variabile all'interno della stringa è un array associativo o bidimensionale:

<?php
$sito["nome"] = "html.it";
// la successiva assegnazione genererà un errore
$stringa1 = "Naviga su $sito["nome"]";
// anche questa assegnazione genererà un errore
$stringa2 = "Naviga su $sito['nome']";
// questa assegnazione funziona correttamente
$stringa3 = "Naviga su $sito[nome]";
// si può ricorrere alle parentesi graffe
// anche questa assegnazione funziona
$stringa4 = "Naviga su {$sito['nome']}";
// anche la variabile $stringa5 conterrà la stringa
// corretta "Naviga su html.it "
$stringa5 = "Naviga su " .$sito["nome"];
$sito[4][1] = "html.it";
// la variabile $stringa6 conterrà la stringa
// errata "Naviga su Array[1]"
$stringa6 = "Naviga su $sito[4][1]";
// la successiva variabile conterrà la stringa
// corretta "Naviga su html.it "
$stringa7 = "Naviga su " .$sito[4][1];
// anche la successiva variabile conterrà la stringa corretta
$stringa8 = "Naviga su {$sito[4][1]}";
?>

Come si può notare nel caso della variabile $stringa3, la componente di un array associativo all'interno di una stringa non va specificata mediante virgolette doppie o singole.

Questo modo di procedere si contrappone alle usuali regole di buona scrittura del codice indicate nella documentazione ufficiale. In alternativa si può ricorrere all'utilizzo delle parentesi graffe ovvero alla cosiddetta sintassi complessa, come nel caso delle variabili $stringa4 e $stringa8 dell'esempio precedente. Il nome deriva non tanto dalla sua difficoltà di utilizzo, quanto dalla possibilità di inserire espressioni complesse come se si fosse all'esterno della stringa, per maggiori dettagli si rimanda alla documentazione ufficiale.

Infine nel caso delle variabili $stringa5 e $stringa7 si è fatto ricorso all'operatore di concatenazione, ovvero il punto (.), che permette di unire più stringhe. Il successivo esempio ne rende più chiaro l'utilizzo:

<?php
$uno = "Naviga";
$due = "su";
$tre = "html.it";
// la variabile $stringa conterrà la
// stringa "Naviga su html.it "
$stringa = $uno. " " .$due. " " .$tre;
?>

Utilizzando l'operatore .= è possibile effettuare concatenazione ed assegnazione in un unica istruzione.

<?php
$stringa = "Naviga su ";
//sintassi classica
$stringa = $stringa. "html.it";
//sintassi abbreviata
$stringa .= "html.it";
?>

Se all'interno della stringa vogliamo inserire le virgolette doppie ("), il carattere di backslash (), o il simbolo del dollaro ($) dobbiamo effettuarne il cosiddetto escape. Sarà necessario, cioè, far precedere tali simboli dalla backslash così: ", , $, in caso contrario potremmo ottenere un messaggio d'errore. È anche possibile inserire alcuni caratteri speciali quali linefeed (new line), n, carriage return, r, o tab, t.

<?php
$stringa = "Egli disse:"Naviga su html.it!"";
$stringa1 = "Adesso vado a capo.nQui sono alla riga successiva.";
?>

In alternativa PHP prevede che le stringhe possano essere racchiuse tra virgolette singole ('). Con questa sintassi non viene effettuata la sostituzione delle variabili con il corrispondente valore.

<?php
$sito = 'html.it';
// la variabile conterrà la stringa "Naviga su $sito"
$stringa1 = 'Naviga su $sito';
// la variabile conterrà la stringa "Naviga su html.it"
$stringa2 = 'Naviga su ' .$sito;
?>

I caratteri che in questo caso devono essere preceduti da backslash sono le virgolette singole, ' e la backslash stessa, .

<?php
// l'assegnazione seguente è corretta
$stringa1 = 'Egli disse:"L'importante è navigare su html.it"';
// non è possibile usare caratteri speciali
$stringa2 = 'Il carattere di new line n non verrà considerato, ma stampato tale e quale';
?>

heredoc

L'ultima sintassi disponibile è quella dei cosiddetti "documenti here" (heredoc). Le stringhe in questo caso sono delimitate inizialmente da tre simboli di minore seguiti da un identificatore, ad esempio <<<DH. La chiusura si ottiene mediante il medesimo identificatore seguito da punto e virgola, DH;.

Il principale vantaggio di questa rappresentazione è che le variabili vengono sostituite con il corrispondente valore e le virgolette doppie non necessitano di escape. Risulta molto utile, ad esempio, per stampare dei form evitando il continuo ricorso a backslash nell'inserimento di attributi dei tag HTML.

<?php
$sito = "html.it";
// la seguente variabile conterrà la stringa "Naviga su html.it"
$stringa = <<<DH
Naviga su $sito
DH;
// ecco come costruire un form
$form = <<<DH
<form method="post" action="reciver.php">
<input type="text" name="testo" value="">
<input type="submit" name="invia" value="invia">
</form>
DH;
?>

Echo e print, l'output delle strighe

Dopo aver illustrato come definire le stringhe, vediamo ora come visualizzarle. PHP prevede diverse funzioni per l'output, la principale è echo(). In realtà non è una funzione vera e propria, ma un costrutto del linguaggio e quindi possiamo omettere le parentesi tonde.

<?php
echo "Consulta il sito html.it";
// la stringa può essere suddivisa su più linee
echo "La stringa si compone
di più linee
ma verrà correttamente stampata";
// si possono inserire dei caratteri new line n all'interno della stringa
echo "La stringa contiene caratteri new linene viene stampatansu più lineencontrollate il sorgente html";
echo "La stringhe ", "possono essere più di una ";
$stringa = "stringa di prova";
echo $stringa;
echo "Ecco una $stringa";
?>

Echo prevede una sintassi abbreviata che funziona solo se nel file di configurazione php.ini la direttiva short_open_tag è impostata su on:

<!-- così viene stampata la variabile $stringa -->
<?=$stringa?>

La funzione print(), anch'essa prevista dal linguaggio, si può considerare praticamente equivalente ad echo. Alcuni test hanno però dimostrato che echo risulta più veloce del 5-10% a seconda dei contesti. Si osservi che la sintassi di print() non permette argomenti multipli.

<?php
$stringa = "stringa di prova";
print "Ecco una $stringa";
// così non funziona
print "La stringhe ", "non possono essere più di una ";
?>

Formattare le stringhe: printf

La funzione printf() (come l'omologa sprintf()), viene utilizzata per produrre un output formattato. È sconsigliabile in termini di prestazioni rispetto alle altre due, va quindi utilizzata solo quando sia effettivamente necessaria.

Si pensi di dover stampare il numero 1/6: utilizzando echo o print si otterrebbe il risultato seguente 0.166666666667. Per ottenere un risultato più leggibile, con due sole cifre dopo la virgola dovremo ricorrere a printf();

<?php
// stampiamo (1/6) come 0.17
printf("%1.2f", (1/6));
?>

In pratica il primo argomento della funzione specifica il formato con cui rappresentare il numero che compare come secondo argomento. Nell'esempio mostrato il numero da stampare dovrà essere costituito dal almeno un carattere, dovrà avere due cifre dopo la virgola e dovrà essere trattato come un numero floating-point (f).

Forse l'utilizzo della funzione non è immediato, sinteticamente per indicare come formattare l'output si specificano nell'ordine:

  • uno o più caratteri (escluso %) che precedono il risultato
  • il simbolo %
  • uno specificatore di padding (opzionale)
  • uno specificatore di allineamento (opzionale)
  • uno specificatore di numero minimo di caratteri (opzionale)
  • uno specificatore di precisione (opzionale)
  • uno specificatore di tipo che indica se l'argomento da stampare sia da considerarsi intero, float, stringa etc.

Per maggiori dettagli si rimanda alla documentazione ufficiale, mentre di seguito si riportano alcuni esempi significativi:

<?php
// stampiamo "valore pari a euro 30.25"
printf("valore pari a euro %2.2f", 30.25);
// stampiamo 2 come 00002
printf("%05d", 2);
// stampiamo 2 come ***2
printf("%'*4d", 2);
?>

PHP fornisce anche altre funzioni di output che, per ragioni di spazio e particolarità di utilizzo, non prenderemo in considerazione. Si descriverà più avanti la funzione number_format(), utile per la formattazione dei numeri, che permette di evitare il ricorso alla più complessa printf().

Funzioni per le stringhe in applicazioni web

Terminata l'analisi dei concetti basilari, prendiamo in considerazione alcune funzioni particolarmente utili nello sviluppo di applicazioni web. In particolare per trattare i dati inseriti dagli utenti.

La regola fondamentale per chi si cimenti in questo compito è: "non fidarsi mai di ciò che proviene dal web!" In particolare dobbiamo trattare come "contaminati" tutti dati inviati dai navigatori del nostro sito, assicurandoci che il loro contenuto non possa in qualche modo danneggiare l'applicazione.

L'inserimento di tag HTML, se inviati al browser, potrebbe rovinare il layout delle nostre pagine, l'inserimento di javascript potrebbe risultare ancora più dannoso. Basti pensare ad applicazioni quali forum o guestbook per rendersi conto dei possibili rischi.

Togliere il markup HTML dalle stringhe: strip_tags

Fortunatamente viene in nostro aiuto la funzione strip_tags() che permette di eliminare i tag HTML, JavaScript e marcatori PHP indesiderati.

<?php
$stringa = "Visita <b><a href="http://www.html.it">html.it</a></b>";
// stampiamo solo la stringa "Visita html.it" eliminando i tag HTML
echo strip_tags($stringa);
?>

La funzione è abbastanza flessibile da permettere di conservare solo i tag desiderati, basterà specificarli come secondo argomento:

<?php
$stringa = "Visita <b><i><a href="http://www.html.it">html.it</a></i></b>";
// Eliminiamo tutto tranne grassetti e corsivi
// Stamperemo "<b><i>Visita html.it</i></b>" eliminando i tag <a>
echo strip_tags($stringa,"<b><i>");
?>

Eliminare gli spazi 'inutili' dalle stringhe: trim

La funzione trim() permette di rimuovere spazi bianchi, " " (ASCII 32), caratteri di new line, "n" (ASCII 10), caratteri di carriage return, "r" (ASCII 13), tabulazioni, "t" (ASCII 9), NUL "" (ASCII 0), tab verticali, "x0B" (ASCII 11) all'inizio ed alla fine di una stringa.

Tali caratteri possono essere erroneamente introdotti in un campo di input o una textarea. Una situazione tipica si ha quando l'utente effettua un copia-incolla da un documento. Mediante trim() un simile dato può essere "ripulito" prima di essere elaborato.

Analogamente le due funzioni ltrim() ed rtrim() si limitano a rimuovere tali caratteri rispettivamente all'inizio ed alla fine della stringa.

<?php
$stringa = "  ci sono degli spazi  ";
// la variabile $stringa dopo l'assegnazione successiva conterrà la stringa
// "ci sono degli spazi" priva di spazi all'inizio e alla fine
$stringa = trim($stringa);
?>

Visualizzare il codice HTML

Per visualizzare codice HTML, senza che questo venga interpretato dal browser, possiamo ricorrere alla funzione htmlspecialchars(). Nel suo utilizzo basilare si occupa di trasformare i caratteri <, >, ", & nei corrispondenti codici (entities) HTML, &lt;, &gt;, &quot;, &amp;. Si può anche optare per la più completa funzione htmlentities() che trasforma tutti i caratteri che hanno un equivalente HTML nella corrispondente entità HTML. Ad esempio il simbolo di marchio registrato ® viene convertito nel corrispondente &reg;.

<?php
$stringa = "<caratteri html>";
// la variabile $stringa dopo l'assegnazione successiva conterrà
// la stringa "<caratteri html>"
$stringa = htmlspecialchars($stringa);
echo $stringa;
?>

Effettuare l'escape dei caratteri per il DB

Nel lavorare con i database non possiamo trascurare la funzione addslashes(). Tale funzione effettua automaticamente l'escape dei caratteri che potrebbero generare errori nelle query SQL, inserendo opportunamente delle backslash. Si osservi il codice seguente:

<?php
// dati per la connessione al database
$server = "localhost";
$user = "utente";
$password = "xyz";
$database = "miodb";
$conn = @mysql_connect($server,$user,$password);
if ($conn)
{
	$stringa = "Ci vuole pratica per usare l'HTML";
	// l'apice genererà un errore nell'esecuzione della query seguente
	$query = "INSERT INTO nome_tabella (campo_stringa) VALUES ('$stringa')";
	$result = mysql_db_query($database,$query,$conn);
	// in questo secondo caso si evita l'errore trasformando la stringa
	// così: "Ci vuole pratica per usare l'HTML"
	$stringa = addslashes($stringa);
	$query = "INSERT INTO nome_tabella (campo_stringa) VALUES ('$stringa')";
	$result = mysql_db_query($database,$query,$conn);
}
?>

Nel primo caso SQL viene confuso dall'apostrofo (') presente nella stringa che può essere interpretato come delimitatore finale di campo generando un errore. Nel secondo, l'escape del carattere, fa sì che tutto funzioni correttamente.

Si osservi che se nel file php.ini la direttiva magic_quotes_gpc è impostata ad on, i dati provenienti da GET, POST e Cookie vengono modificati automaticamente senza bisogno di usare addslashes. Per ulteriori approfondimenti si rimanda alla documentazione ufficiale.

L'operazione inversa viene svolta dalla funzione stripslashes() che rimuove tutte le backslash e restituisce la stringa originale. Ad esempio ' diventa ', diventa e così via.

Funzioni per formattare le stringhe

Passiamo ora ad analizzare il tema più complesso della formattazione avanzata.

Spesso nella stampa di una stringa vogliamo ottenere una particolare formattazione, anche in quasto caso PHP ci favorisce mettendoci a disposizione un buon numero di funzioni. Vediamone alcune di frequente utilizzo: strtoupper() e strtolower() permettono di convertire, rispettivamente in maiuscolo e minuscolo, i caratteri alfabetici di una stringa.

<?php

$stringa = "Lavoriamo sulle lettere Maiuscole e Minuscole";

// stampiamo "LAVORIAMO SULLE LETTERE MAIUSCOLE E MINUSCOLE"

echo strtoupper($stringa);

// stampiamo "lavoriamo sulle lettere maiuscole e minuscole"

echo strtolower($stringa);

?>

La funzione ucfirst() rende maiuscolo il carattere iniziale di una stringa, mentre ucwords() rende maiuscolo il primo carattere di ciascuna parola in essa contenuta.

<?php

$stringa = "consulta il sito html.it";

// stampiamo "Consulta il sito html.it"

echo ucfirst($stringa);

// stampiamo "Consulta Il Sito Html.it"

echo ucwords($stringa);

?>

Una funzione che spesso risulta utile è nl2br(), essa consente di trasformare i caratteri di new line (n) nei corrispondenti <br> HTML. Un possibile impiego lo si ha nella stampa di testo inviato mediante una textarea (magari memorizzato in database), in modo da mantenere i ritorni a capo originari.

<?php

$stringa = "uno

due

tre

";

echo nl2br($stringa);

/* restituisce

uno<br>

due<br>

tre<br>

*/

?>

La funzione wordwrap() suddivide la stringa passata come primo argomento, in base al numero di caratteri specificati come secondo argomento. L'eventuale terzo argomento rappresenta il carattere scelto come delimitatore, di default viene usato n. Se la lunghezza non viene specificata la stringa verrà interrotta a 75 caratteri. L'ultimo argomento, sempre opzionale, se impostato a 1 impone che la stringa sia suddivisa alla lunghezza prevista anche se ciò spezza in più parti una singola parola. Vediamo gli esempi seguenti:

<?php

$testo = "Cantami o diva del pelide Achille l'ira funesta";

// spezziamo il testo ogni 15 caratteri

$testo1 = wordwrap($testo,15);

// trasformo i n in <br> per la stampa html

echo nl2br($testo1);

/* restituisce

Cantami o diva

del pelide

Achille l'ira

funesta

*/


// spezziamo il testo ogni 6 caratteri

// senza mantenere intere le parole


echo nl2br(wordwrap($testo,6,"n",1));

/* restituisce

Cantam

i o

diva

del

pelide

Achill

e

l'ira

funest

a

*/

?>

Anche se non riguarda strettamente le stringhe, riprendiamo la già citata funzione number_format() utilizzabile per formattare i numeri evitando il ricorso alla più complessa printf(). Il primo argomento sarà il numero da formattare, il secondo il numero di cifre dopo la virgola, con il terzo ed il quarto si possono opzionalmente specificare i separatori delle cifre decimali e delle migliaia.

<?php

// stampiamo 1/6 come 0.17 anziché 0.166666666667

echo number_format((1/6),2);

// se specificato il secondo argomento viene usata la virgola

// come separatore delle migliaia: 10000 diventa 10,000.00


echo number_format(10000,2);

// le cifre decimali saranno separate da v e

// le migliaia da p 3567,90 diventa 3p567v90

echo number_format(3567.90,2,"v","p");

?>

Funzioni per lavorare sulle stringhe

Vediamo ora alcune funzioni che svolgono operazioni comuni nel lavorare con le stringhe. La funzione strlen() fornisce il numero di caratteri di cui si compone una stringa:

<?php

// la funzione stamperà il valore 14

echo strlen("Visita html.it");

?>

Per estrarre una porzione da una stringa o, come si suol dire, per ottenere una sottostringa, possiamo ricorrere a substr(). Questa funzione prevede tre argomenti: la stringa da elaborare, il punto di partenza a partire dal quale estrarre la sottostringa ed eventualmente (parametro opzionale) la lunghezza della sottostringa. A tale proposito si rammenta che nel computo il primo carattere ha posizione 0 e non 1. Gli esempi seguenti chiariranno quanto descritto:

<?php

// stamperà "html.it" la porzione

// dalla posizione 7 alla fine


echo substr("Visita html.it",7);

// stamperà "html" partendo dalla

// posizione 7 per 4 caratteri di lunghezza


echo substr("Visita html.it",7,4);

?>

Se come punto di partenza si specifica un valore negativo, si partirà a ritroso dalla fine della stringa:

<?php

// stamperà "t"

echo substr("Visita html.it",-1);

// stamperà "it"

echo substr("Visita html.it",-2);

// stamperà "html"

echo substr("Visita html.it",-7,4);

?>

Se si inserisce un valore negativo per la lunghezza, verranno omessi tanti caratteri dalla fine della stringa quanti specificati dal valore:

<?php

// stamperà "Visita" eliminando

// 8 caratteri a partire dalla fine della stringa

echo substr("Visita html.it",0,-8);

?>

Spesso utili in combinazione con le precedenti funzioni sono strpos() e strrpos(). Con strpos() è possibile individuare la posizione della prima occorrenza di una stringa all'interno di un'altra. Il primo argomento indicherà la stringa all'interno della quale effettuare la ricerca, il secondo specificherà invece la stringa che si vuole cercare. Si faccia attenzione che la funzione è case sensitive, ovvero distingue maiuscole e minuscole, inoltre, come visto in precedenza, il primo carattere ha posizione zero.

<?php

// la funzione stamperà la posizione della prima i ovvero 1

// si ricordi che il primo carattere ha posizione 0


echo strpos("Visita html.it","i");

// la funzione stamperà 7

echo strpos("Visita html.it","html");

?>

La funzione prevede un terzo argomento opzionale per specificare da che posizione iniziare la ricerca:

<?php

// stamperà la posizione della prima i dopo

// il terzo carattere ovvero 3


echo strpos("Visita html.it","i",2);

?>

Analogamente la funzione strrpos() fornirà la posizione dell'ultima occorrenza del carattere specificato. Se come secondo argomento viene inserita una stringa verrà considerato solo il primo carattere:

<?php

// la funzione stamperà la posizione dell'ultima i ovvero 12

echo strrpos("Visita html.it","i");

// la funzione stamperà ancora 12

echo strrpos("Visita html.it","ixxxxxxxxxxx");

?>

Un possibile problema si può verificare se la stringa non viene trovata, infatti entrambe le funzioni restituiscono il valore booleano FALSE, che, semplificando, può considerarsi equivalente a zero, ovvero alla posizione del primo carattere. Per evitare errori basta utilizzare l'operatore === per verificare il valore fornito dalla funzione.

<?php

$posizione = strpos("Visita html.it","V");

// questo codice induce in errore

if(!$posizione)

{

  // stringa non trovata

}

else

{

  // stringa trovata

}

// questo codice è corretto

if($posizione === false)

{

  // stringa non trovata

}

else

{

  // stringa trovata

}

?>

Per effettuare sostituzioni di caratteri all'interno di una stringa si può ricorrere a strtr(), tale funzione riceve come primo argomento la stringa da elaborare, come secondo i caratteri da sostituire, come terzo i caratteri utilizzati per la sostituzione.

<?php

// la funzione sostituirà ogni a con o ed ogni i con u

// si otterrà "Vusuto html.ut";

echo strtr("Visita html.it","ai","ou");

?>

Sempre in tema di sostituzioni PHP fornisce la funzione str_replace() che sostituisce tutte le occorrenze del primo argomento con la stringa specificata come secondo argomento, agendo sulla stringa indicata come terzo argomento.

<?php

// la funzione sostituirà "Ermanno" con

// "Ermanno Ancona"


$stringa = "Articolo a cura di Ermanno";

echo str_replace("Ermanno","Ermanno Ancona",$stringa);

?>

Si osservi che per realizzare regole di sostituzione più complesse, basate su espressioni regolari, si può ricorrere alle funzioni ereg_replace() o preg_replace(), non discusse in questo articolo.

Stringhe e array

Vi è una certa analogia tra stringhe ed array, addirittura potremmo considerare una stringa come un array di caratteri. Il primo carattere rappresenta la componente 0, il secondo la componente 1 e così via.

<?php

$stringa = "Visita il sito html.it";

// verrà stampato il carattere "V"

echo $stringa[0];

// verrà stampato il carattere "t"

echo $stringa[4];

?>

La sintassi mostrata nell'esempio precedente viene mantenuta per compatibilità con le versioni precedenti, ma è sconsigliata dalla versione 4 di PHP. Viene invece preferito l'utilizzo delle parentesi graffe, vediamo alcuni esempi:

<?php

$stringa = "Visita il sito html.it";

// verrà stampato il carattere "V"

echo $stringa{0};

// stampiamo l'ultimo carattere della stringa "t"

// usando la sintassi complessa

echo $stringa{strlen($stringa)-1};

// sostituiamo l'ultimo carattere della stringa

// usando la sintassi complessa


$stringa{strlen($stringa)-1} = 'k';

?>

Alcune funzioni permettono la conversione di stringhe in array e viceversa. La funzione explode() riceve come primo argomento il o i caratteri che separano i diversi elementi, come secondo argomento la stringa che si vuole convertire in array. Come al solito gli esempi chiariranno il concetto:

<?php

$stringa = "12,2,6,78,89,56";

// convertiamo in array utilizzando la virgola come separatore

$array = explode(",",$stringa);

echo $array[0]; // stampa 12

echo $array[1]; // stampa 2

echo $array[2]; // stampa 6

.........

?>

Si può, opzionalmente, utilizzare un terzo argomento per limitare il numero di componenti dell'array:

<?php

$stringa = "12,2,6,78,89,56";

// convertiamo in array di tre componenti

$array = explode(",",$stringa,3);

echo $array[0]; // stampa 12

echo $array[1]; // stampa 2

echo $array[2]; // stampa 6,78,89,56

?>

Si noti che se il/i caratteri indicati come separatore non si trovano all'interno della stringa, verrà creato un array di una sola componente contenente tutta la stringa.
Per ottenere l'effetto opposto, ovvero convertire un array in una stringa basta ricorrere alla funzione implode(). Il primo argomento sarà la stringa utilizzata come separatore, il secondo l'array da convertire.

<?php

$array[0] = "visita"; $array[1] = "il"; $array[2] = "sito";

// convertiamo in striga usando la virgola come separatore

// il risultato sarà "visita,il,sito";


$stringa = implode(",",$array);

echo $stringa;

?>

Merita un breve cenno la funzione split(), più sofisticata di explode anche se più lenta. Essa infatti permette di specificare un'espressione regolare come separatore. L'esempio che segue indica come separatore un tabulatore o una nuova linea:

<?php

$stringa = "Visita    il    sito

html.it

molto

interessante";

// convertiamo in array

$array = split("[tn]",$stringa);

echo $array[0]; // stampa "Visita"

echo $array[1]; // stampa "il"

echo $array[2]; // stampa "sito"

echo $array[3]; // stampa "html.it"

.................

?>

Conclusioni

Con questo articolo non si è certamente esaurito l'argomento stringhe, basta infatti consultare la documentazione ufficiale alla url http://www.php.net/manual/en/ref.strings.php, per rendersene conto. Le funzioni sono tantissime ed è sempre consigliabile uno sguardo a queste pagine quando si debba risolvere un particolare problema: meglio risparmiare codice se esiste già una funzione che fa' al caso nostro. Si sono volutamente trascurate alcune funzioni che coinvolgono l'utilizzo di espressioni regolari, molto sofisticate e potenti, ma che richiederebbero un articolo a parte. Sono state invece privilegiate alcune tra le funzioni più significative nello sviluppo di applicazioni web, con l'obiettivo di fornire una panoramica sulle notevoli possibilità offerte dal linguaggio nella manipolazione di stringhe.


Ti consigliamo anche