Ci occuperemo ora di sette funzioni native del PHP che
potremo sfruttare per le nostre operazioni di pattern matching e pattern sobstitution. Queste funzioni
rientrano nella tipologia (classe) POSIX estesa.- eregi(): da utilizzare per le operazioni di ricerca di
sotto stringhe all'interno di sequenze di caratteri.
- ereg(): permette di svolgere le stesse operazioni
consentite da ereg ma è inoltre case sensitive, cioè può distinguere i caratteri tra
minuscoli e maiuscoli.
- eregi_replace(): consente di ricercare una sotto-stringa all'interno di una stringa
principale e di sostituire la prima nella seconda con una terza stabilita arbitrariamente dallo
sviluppatore.
- ereg_replace(): ha una funzione analoga a quella di eregi_replace ma è inoltre
case sensitive.
- spliti(): suddivide una stringa in una matrice tramite le espressioni
regolari
- split(): ha la stessa funzione di spliti() ma è inoltre case
sensitive.
- sql_regcase(): genera un'espressione regolare per riconoscimenti senza distinguere tra
maiuscole e minuscole
Passiamo ora a qualche esempio pratico. Cominciamo con eregi() e osserviamone i
risultati:<? $str = "Sequenza di caratteri";
if (eregi("sequenza", $str)) { echo "Trovato!"; }else{ echo "Non trovato!"; } ?> eregi()
cerca nel valore stringa della variabile "$str" la sotto-stringa "sequenza"; dato che questa funzione non
distingue tra lettere maiuscole e minuscole, essa ignora la differenza tra "Sequenza" e "sequenza" e
trova il parametro desiderato restituendo "Trovato!".
Se sostituissimo eregi() con ereg()
l'output sarebbe invece "Non trovato!", infatti, questa seconda funzione è case sensitive,
quindi non rileva il parametro desiderato nella stringa proposta.
Passiamo ora a
eregi_replace():
<? $str = "Sequenza di caratteri"; $sostituisci =
"sequenza"; $sostituto = "Insieme"; echo eregi_replace($sostituisci, $sostituto, $str); ?> L'output del nostro piccolo script sarà "Insieme di caratteri."; in pratica eregi_replace()
accetta tre parametri: la sotto-stringa da sostituire (nel nostro caso la variabile "$sostituisci"), la
sotto-stringa sostitutiva ("$sostituto") e la stringa principale su cui deve essere operata la modifica
("$str"). Una volta rilevato il primo parametro nel terzo, il primo viene sostituito dal secondo. Se
avessimo utilizzato ereg_replace() invece di eregi_replace(), il risultato del nostro script sarebbe stato una
stampa a video del valore della variabile "$str"; infatti ereg_replace(), in quanto case sensitive,
avrebbe rilevato la differenza tra tra "Sequenza" e "sequenza" e non avrebbe operato la sostituzione.
Anche per quanto riguarda la funzione spliti() proponiamo prima di tutto un breve esempio
pratico:<? $str = "duralavita"; $array = spliti ("La", $str, 2); print_r($array); ?> Il cui risultato sarà:
Array ( [0] => dura [1] => vita
) Nell'esempio, spliti() suddivide una stringa utilizzando la sotto-stringa "La" come separatore;
questa funzione accetta tre parametri: il separatore, la stringa da suddividere e un numero intero con funzione di
limit. Per poter utilizzare split() invece di spliti() ed ottenere il medesimo risultato, il
separatore avrebbe dovuto essere "la" e non "La", dato che split() è case sensitive,
questo per evitare di avere come risultato un array composto da un solo valore stringa non separato:Array (
[0] => duralavita ) Analizziamo infine la funzione svolta da sql_regcase():
<? echo
sql_regcase("Sequenza"); ?> L'output ottenuto sarà il
seguente:
[Ss][Ee][Qq][Uu][Ee][Nn][Zz][Aa] sql_regcase() restituisce un'espressione regolare in
grado di riconoscere un parametro stringa a prescindere dal fatto che le lettere siano maiuscole o minuscole. Viene
quindi generata una stringa composta da ciascun carattere alfabetico riportato tra parentesi quadre; le parentesi contengono
il singolo carattere in formato maiuscolo e minuscolo.
Attenzione: questo articolo
è stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne è vietata la riproduzione, anche parziale, senza l'esplicito consenso
dell'autore e della redazione di Mrwebmaster.it. |