venerdì, agosto 30, 2013

PHP - Gestione delle stringhe


Questo post fa parte di una serie preparata qualche anno fa per delle lezioni su PHP.

Gestione delle stringhe

Alcune cose di base per chi proviene da esperienza con altri linguaggi.
<?php
    $name="Mario";
    $surname="Rossi";
    $file="picture1.jpeg";
    // usare una delle seguenti istruzioni
:

    $output="$name $surname ha visto l'immagine $file"; // possibile
    $output=$name . ' ' . $surname . ' ha visto l\'immagine ' . $file; // meglio
    $output=sprintf('%s %s ha visto l\'immagine %s',
        $name, $surname, $file); // ancora megli
o    $output=__('%name% %surname% saw the image %filename%', array(
        '%name%'=>$name,
        '%surname%'=>$surname,
        '%filename%'=>$file,
        ));  // molto meglio (ma dipende dal framework e dagli strumenti i18n


Da notare:
  • sostituzione dei nomi delle variabili con il loro valore nel caso di stringhe racchiuse da virgolette doppie
  • uso del backslash per l'escape dell'apice singolo
  • uso di sprintf o degli strumenti i18n

Quando si usa sprintf, se la stringa è racchiusa da virgolette doppie si possono usare sequenze speciali per andare a capo, per tabulare, ecc. (es. "foo\nbar\tbaz").

Le funzioni per le stringhe sono troppo numerose per essere citate. Conviene tenere sotto mano la pagina del manuale di PHP prima di mettersi a reinventare la ruota...
Ad esempio, può essere conveniente usare str_replace() per fare un trova e sostituisci...

Esercizio

Leggere un file di testo con la funzione file(), scorrere gli elementi dell'array e fare delle operazioni su tutti gli elementi (ad esempio un trova e sostituisci). Concatenare l'array modificato ottenuto con implode() e presentarlo in output.

Si consideri il caso in cui si vuole far comparire un messaggio di benvenuto ad un utente. Il modello di testo di messaggio potrebbe essere memorizzato in un file welcome_template.txt simile al seguente:

Ciao, %name%,
Benvenuto nel sito web %website%,
Oggi è il %date%.
#Questo è un commento e non va visualizzato.
#Ricordarsi di impostare il nome del sito web nel file di configurazione.

La nostra applicazione dovrà impostare alcune variabili, leggere il file e operare dei trova e sostituisci per rimpiazzare  i segnaposto:

$rows=file('welcome_template.txt');
$name='Mario';
$website='PHP Developers In Action';
$date=// aggiungere il codice per trovare la data
/* aggiungere il codice per il trova e sostituisci... */
echo implode("\n", $rows);

Nessun commento:

Posta un commento