Le espressioni regolari in Php

Per usare le espressioni regolari nel linguaggio php utilizzo due istruzioni apposite, preg_match e preg_replace.

Cos'è una regular expression? E' una sequenza di comandi che mi permette di lavorare sulle stringhe in modo avanzato, risparmiando molte righe di codice. Le espressioni regolari sono molto potenti e utili per chi programma... anche se inizialmente sono un po' difficili da capire.

L'istruzione preg_match

L'istruzione preg_match verifica se un'espressione regolare è vera su una particolare stringa.

preg_match( $reg, $stringa );

Restituisce in output un valore booleano 0 ( falso ) o vero ( 1 ).

Il comando ha anche tre parametri opzionali.

preg_match( $reg, $stringa [ ,$match [ , flag [ offset ] ] ] );

Nella variabile $match sono registrate le occorrenze trovate mentre l'opzione flag fissa le condizioni.

L'ultima opzione $offset mi permettse di indicare da quale posizione della stringa cominciare la ricerca.

Un esempio pratico

Nel seguente codice voglio verificare se la stringa $cognome termina con l'occorrenza "ni".

$stringa="Andrea Minini";
$reg="'ni\b'";
$y=preg_match( $reg, $stringa );

Lo script assegna alla variabile $y il valore 1 perché la stringa termina con le lettere "ni".

L'istruzione preg_replace

L'istruzione preg_replace esegue l'espressione regolare $reg per modificare la stringa $stringa.

preg_replace( $reg, $stringa );

Questo comando agisce direttamente sulla stringa e apporta le modifiche richieste.

Il comando ha anche due parametri opzionali.

preg_replace( $reg, $stringa [ , $limite [ , $conta ] ] );

Il parametro $limite fissa il numero massimo di sostituzioni a partire da sinistra mentre il parametro $conta registra il numero delle sostituzioni in una variabile.

Un esempio pratico

In questo codice chiedo di sostituire tutte le parole che terminano con il suffisso "to" con il suffisso "ti".

$stringa="tasto rotto del tostapane";
$reg="'to\b'";
$sost="ti";
echo(preg_replace( $reg, $sost, $stringa ));

Il precedente script sostituisce il suffisso "to" con "ti" a tutte le parole.

Il risultato in output è il seguente:

tasti rotti del tostapane

Da notare che l'espressione regolare non ha sostituito tutte le occorrenze "to" ma soltanto quelle al bordo a destra delle parole grazie alla presenza del comando \b del regex.

E' soltanto un semplice esempio pratico di utilizzo. Il regex è molto più potente.



Per scrivere un commento

knowledge base

Il linguaggio Php

FAQ