Introduzione
La sintassi utilizzata dalle espressioni regolari di queste funzioni
ricorda da vicino Perl. Le espressioni regolari devono essere racchiuse
tra delimitatori, ad esempio /. Ogni carattere che non sia alfanumerico
od il backslash (\) può essere usato come delimitatore. Se il carattere
usato come delimitatore deve essere utilizzato all'interno
dell'espressione, questo deve essere preceduto dal carattere di escape (\). Infine, a partire dalla versione 4.0.4 di PHP, si possono anche usare
i delimitatori stile Perl come (), {}, [], ed <>.
Per maggiori dettagli vedere Sintassi dei criteri di riconoscimento.
Il delimitatore finale può essere seguito da vari modificatori
che agiscono sul criterio di riconoscimento. Per maggiori informazioni si rimanda al
capitolo Modificatori di criterio (Pattern Modifiers).
Utilizzando le funzioni POSIX-esteso
il PHP è in grado di supportare le espressioni regolari scritte con la sintassi POSIX-esteso.
| Attenzione |
Occorre prestare attenzione ad alcune limitazioni di PCRE.
Maggiori informazioni in merito possono essere reperite alla pagina
http://www.pcre.org/pcre.txt for more info.
|
Requisiti
Il supporto delle espressioni regolari è ottenuto mediante la
libreria PCRE, che è un software open source, scritto da Philip Hazel,
ed il cui copyright è detenuto dalla Università di Cambridge,
Inghilterra. La libreria è disponibile all'indirizzo
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/.
Installazione
A partire dalla versione 4.2.0 di PHP queste funzioni sono abilitate
per default. Queste funzioni possono essere disattivate usando
--without-pcre-regex. Utilizzare
--with-pcre-regex=DIR per specificare
la directory DIR in cui sono posizionati i file di include e le librerie di PCRE,
nel caso non si desideri utilizzare le librerie incluse.
Nelle vecchie versioni di PHP, occorre configurare e
compilare il PHP con --with-pcre-regex[=DIR]
per attivare queste funzioni.
La versione per Windows di PHP
ha già compilato il supporto per questo modulo. Non occorre caricare alcun modulo
addizionale per potere utilizzare queste funzioni.
Configurazione di Runtime
Questa estensione non definisce
alcuna direttiva di configurazione in php.ini
Tipi di risorse
Questa estensione non definisce alcun tipo di risorsa.
Costanti predefinite
Queste costanti sono definite da questa estensione e
sono disponibili solo se l'estensione è stata compilata
nel PHP o se è stata caricata dinamicamente a runtime.
Tabella 1. Costanti di PREG
| costante | descrizione |
|---|
| PREG_PATTERN_ORDER |
Ordina i risultati in modo tale che $matches[0] sia l'array di tutti i testi
riconosciuti, $matches[1] sia l'array delle stringhe identificate dal primo
criterio posto tra parentesi, e così via. Questa costante si usa solo con
preg_match_all().
|
| PREG_SET_ORDER |
Ordina i risultati in modo tale che $matches[0] sia l'array del primo set di testi
riconosciuti, $matches[1] sia l'array del secondo set, e così via.
Questa costante si usa solo con preg_match_all().
|
| PREG_OFFSET_CAPTURE |
Vedere la descrizione di
PREG_SPLIT_OFFSET_CAPTURE. Questa costante è disponibile
a partire dalla versione 4.3.0 di PHP.
|
| PREG_SPLIT_NO_EMPTY |
Questa costante indica a preg_split() di restituire
solo segmenti non vuoti.
|
| PREG_SPLIT_DELIM_CAPTURE |
Questa costante indica a preg_split() di catturare
le espressioni tra parentesi nel criterio di delimitazione. Questa costante
è disponibile a partire dalla versione 4.0.5 di PHP.
|
| PREG_SPLIT_OFFSET_CAPTURE |
Se viene impostato questo flag, per ogni testo riconosciuto viene restituito
l'offset nella stringa di ricerca. Occorre notare che questo cambia il tipo di valore
restituito nell'array, ogni elemento è, a sua volta, un'array composto dalla
stringa riconosciuta, all'indice 0, e dall'offset della stringa nell'indice
1. Questa costante è disponibile a partire dalla versione 4.3.0 di PHP
e si utilizza solo nella funzione preg_split().
|
Esempi
Esempio 1. Esempi di espressioni di riconoscimento valide /<\/\w+>/ |(\d{3})-\d+|Sm /^(?i)php[34]/ {^\s+(\s+)?$}
|
Esempio 2. Esempi di espressioni errate
/href='(.*)' - manca il delimitatore finale
/\w+\s*\w+/J - il modificatore 'J' è sconosciuto
1-\d3-\d3-\d4| - manca il delimitatore iniziale
|