Formattazione delle stringhe in PHP

22 aprile 2016

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:

FormatoDescrizione
%%Segno di percentuale.
%bNumero binario.
%cCarattere in formato ASCII.
%dDecimale con segno.
%eNotazione scientifica in minuscolo (e.g. 1.2e+2).
%ENotazione scientifica in maiuscolo (e.g. 1.2E+2).
%uDecimale senza segno.
%fNumero in virgola mobile (con verifica delle impostazioni di sistema).
%FNumero in virgola mobile (senza verifica delle impostazioni di sistema).
%oNumero in formato ottale.
%sStringa.
%xNumero in formato esadecimale (lettere in minuscolo).
%XNumero 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);

Tutte le lezioni

1 ... 22 23 24 ... 49

Se vuoi aggiornamenti su Formattazione delle stringhe in PHP inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Formattazione delle stringhe in PHP

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy