33 Le stringhe 2

La funzione str_repeat permette di ripetere una stringa (primo argomento) per un numero di volte (secondo argomento)

echo str_repeat("*-", 70);

Un uso un po’ più sofisticato:

$celle = str_repeat("<td> cella </td>", 5);
 echo str_repeat("<tr> $celle </tr>\n", 10);

In questo caso metto in una variabile $celle la ripetizione di 5 volte di una colonna con scritto cella, poi stampo 10 righe con le 5 colonne con scritto cella. Ricordarsi di inserire il tutto in un <table>.

Dato questi 3 numeri:

$a = 123;
$b = 494822;
$c=7;
 
echo $a.$nl;
echo $b.$nl;
echo $c.$nl.$nl.$nl;

La loro formattazione potrebbe generare confusione. Ci viene in contro la funzione str_pad che ordina i numeri aggiungendo delle cifre davanti e dietro.

 echo str_pad($a, 10, "0", STR_PAD_LEFT).$nl;
 echo str_pad($b, 10, "0", STR_PAD_LEFT).$nl;
 echo str_pad($c, 10, "0", STR_PAD_LEFT).$nl;

Quindi i numeri verrebbero stampati:

0000000123
0000494822
0000000007

Gli argomenti sono in ordine: la stringa, di quante unità, il carattere da inserire, e la posizione dove inserirlo. STR_PAD_LEFT mette la stringa in fondo STR_PAD_RIGHT la mette all’inizio, ma è quello di default, quindi sarebbe inutile metterlo. Esiste anche STR_PAD_BOTH che mette la stringa prima e dopo

Un altro caso potrebbe essere quello di esportare dati da un csv separandoli da una virgola (o anche un altro  carattere). Quindi avremo una variabile contenente i dati $cliente e un array contenente i singoli elementi:

$cliente="Rosso, Mario, via Roma 12, 17019 Varazze";
$clienteSplitato= explode(",", $cliente);

La funzione explode fa al caso nostro ed il primo argomento è il carattere separatore (la virgola) e il secondo la fonte su cui la funzione deve agire $cliente. Per stampare i singoli valori dobbiamo specificare gli indici dell’array:

 $cliente="Rosso, Mario, via Roma 12, 17019 Varazze";
 $clienteSplitato= explode(",", $cliente);
 
 echo $clienteSplitato[0].$nl; //cognome
 echo $clienteSplitato[1].$nl; //nome
 echo $clienteSplitato[2].$nl; //via
 echo $clienteSplitato[3].$nl; //cap
 echo $clienteSplitato[4].$nl; //città

La funzione complementare di explode è implode, che ci permette di compattare i risultati di un array sempre con un carattere separatore:

$clienteRicostruito = implode(" | ", $clienteSplitato);
echo $clienteRicostruito.$nl;

Interessante è la combinazione delle 2 funzioni, per manipolare i dati e separarli da un carattere

echo implode(" ; ", explode(",", $cliente)).$nl;

Ecco il risultato: Rosso ; Mario ; via Roma 12 ; 17019 ; Varazze

Un altra funzione è strtok (token) che va a prendere un pezzo di stringa, partendo dalla sinistra, fino a incontrare un carattere  che gli specifichiamo :

$frammento = strtok($cliente, ",");
while ($frammento!==false)
 {
 echo $frammento.$nl;
 $frammento = strtok(",");
 }

Creiamo un ciclo che dice: fino a che $frammento non è diverso da false (usare l’operatore forte), prendi un pezzo della stringa $cliente fino alla successiva virgola. Non c’è bisogno nel secondo strtok di rispecificare da dove prendere il pezzo di stringa.

Un’altra funzione molto utile è get_meta_tags, che va ad estrarre da una pagina le stringhe che gli andiamo a specificare:

$metaTags = get_meta_tags('https://www.dueclic.com');
echo "La pagina dueclic.com è fatta da: {$metaTags[author]}".$nl; 
echo "dueclic contiene i seguenti meta tags: {$metaTags[description]}";

La funzione restituisce un array, quindi dovremo specificare gli indici da stampare, andandoli a vedere nel codice sorgente della pagina. Risultato:

La pagina dueclic.com è fatta da: debba
dueclic contiene i seguenti meta tags: dueclic: servizi web a Genova e in Liguria: servizi IT, web development, programmazione web, realizzazione siti web e web marketing per il tuo business.

Per pulire una stringa di tutto il contenuto html tags e lasciare puro testo ci viene in contro la comoda funzione strip_tags come da esempio:

$riga = <<< End
<div class="container"><h1>dueclic - realizzazione siti web </h1>
<p class=""><strong>dueclic </strong>è il ramo informatico del gruppo Molinari. Siamo un team di specialisti del web che si occupa di&nbsp;<strong>servizi IT,&nbsp;</strong><strong>web development e realizzazione siti web </strong>a Genova, Liguria e in tutta Italia.&nbsp;</p><p class="p-b-30 ">Dal 2009 mettiamo&nbsp;la nostra esperienza&nbsp;al tuo servizio per far <strong>decollare la tua attività&nbsp;su Internet. </strong>Il nostro obiettivo è fornirti tutto ciò che serve a&nbsp;digitalizzare&nbsp;il tuo business&nbsp;garantendoti sempre efficienza e assistenza impeccabili. &nbsp;

End;

echo strip_tags($riga);

Ecco il risultato:

dueclic – realizzazione siti web dueclic è il ramo informatico del gruppo Molinari. Siamo un team di specialisti del web che si occupa di servizi IT, web development e realizzazione siti web a Genova, Liguria e in tutta Italia.  Dal 2009 mettiamo la nostra esperienza al tuo servizio per far decollare la tua attività su Internet. Il nostro obiettivo è fornirti tutto ciò che serve a digitalizzare il tuo business garantendoti sempre efficienza e assistenza impeccabili.