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

Formattazione delle stringhe in PHP

Come utilizzare la sintassi e le funzioni per la formattazione delle stringhe in PHP.
Come utilizzare la sintassi e le funzioni per la formattazione delle stringhe in PHP.
Link copiato negli appunti

A questo punto della guida siamo sicuramente in grado di creare delle stringe concatenate. Abbiamo visto che possiamo farlo utilizzando l'operatore . tra più stringhe oppure tra stringhe e variabili:

$nome = 'Simone';
$eta = 29;
$citta = 'Forli';
$provincia = 'Forli-Cesena';
$regione = 'Emilia-Romagna';
$stringa = $nome . ' ha ' . $eta . ' anni ed abita a ' . $citta . ' in provincia di ' . $provincia . ', nella regione ' . $regione . '.';

L'esempio appena proposto ci consente di stampare una breve descrizione di un utente concatenando le informazioni con del testo esplicativo. Noterete però che la concatenazione è piuttosto scomoda da gestire in questi casi. Un altro svantaggio che si ha è quello di aumentare molto la probabilità di commettere errori, come per esempio gli spazi dimenticati tra le stringhe e le variabili.

Per risolvere questo problema PHP ci mette a disposizione una funzione molto interessante: sprintf(). Attraverso di essa possiamo generare delle stringhe formattate in maniera più semplice e scrivendo del codice più leggibile. Vediamo come realizzare l'esempio precedente utilizzando la funzione appena introdotta:

$nome = 'Simone';
$eta = 29;
$citta = 'Forli';
$provincia = 'Forli-Cesena';
$regione = 'Emilia-Romagna';
$formato = '%s ha %d anni ed abita a %s in provincia di %s, nella regione %s';
$stringa = sprintf($formato, $nome, $eta, $citta, $provincia, $regione);

Se proviamo ad eseguire tale codice otterremo lo stesso risultato dell'esempio visto in precedenza, ma stavolta esso risulterà di più semplice lettura. La funzione sprinft() ci consente di effettuare delle sostituzioni all'interno di una stringa nei punti in cui inseriamo dei placeholder ("segnaposto") delimitati dal carattere %.

La funzione prende in ingresso almeno due parametri, ma ne accetta tanti quanti sono le sostituzioni da effettuare all'interno della stringa più uno che rappresenta la stringa in cui effettuare la sostituzione.

I placeholder che possiamo utilizzare per le sostituzioni devono seguire un formato ben definito in base al tipo di dato che vogliamo stampare. Nell'esempio precedente, infatti, abbiamo visto che in alcuni casi abbiamo utilizzato %s per le stringhe mentre per rappresentare un intero abbiamo impiegato %d. Vediamo quali sono i formati che abbiamo a disposizione:

Formato Descrizione
%% Segno di percentuale.
%b Numero binario.
%c Carattere in formato ASCII.
%d Decimale con segno.
%e Notazione scientifica in minuscolo (e.g. 1.2e+2).
%E Notazione scientifica in maiuscolo (e.g. 1.2E+2).
%u Decimale senza segno.
%f Numero in virgola mobile (con verifica delle impostazioni di sistema).
%F Numero in virgola mobile (senza verifica delle impostazioni di sistema).
%o Numero in formato ottale.
%s Stringa.
%x Numero in formato esadecimale (lettere in minuscolo).
%X Numero in formato esadecimale (lettere in maiuscolo).

I formati più utilizzati nello sviluppo quotidiano sono sicuramente %d %f %s. Analizziamo qualche altro esempio:

$nome = 'Simone';
$quantita = 15;
$sconto = 10;
$totale = 125.9999;
$formato = "%s ha ordinato %d pezzi con uno sconto del %d%% per un totale di euro %.2f.";
$stringa = sprintf($formato, $nome, $quantita, $sconto, $totale);

In questo caso riceveremo come output:

Simone ha ordinato 15 pezzi con uno sconto del 10% per un totale di euro 126.00

Osservando con attenzione la stringa contenente il formato di stampa noteremo alcune particolarità:

  • %% è utilizzato per stampare un simbolo della percentuale;
  • %.2f è utilizzato per formattare il float nel formato a noi più consono. Nel nostro esempio avevamo bisogno di mostrare il numero con due cifre decimali quindi abbiamo anteposto .2 per indicare il numero di cifre dopo la virgola. Possiamo notare, inoltre, che la funzione ha anche effettuato l'arrotondamento automaticamente.

printf()

Se volessimo stampare direttamente a schermo il risultato potremmo utilizzare la funzione printf() che ha lo stesso funzionamento di sprintf() e, in aggiunta, mostra a schermo la stringa formattata.

printf($formato, $nome, $quantita, $sconto, $totale);

Ti consigliamo anche