(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_match -- Riconoscimento con espressioni regolari
Descrizione
mixed
preg_match ( string criterio, string testo [, array &testi_riconosciuti [, int flags [, int offset]]] )
Esegue un riconoscimento nel parametro testo utilizzando
l'espressione regolare indicata in criterio.
Se viene fornito il terzo parametro, testi_riconosciuti, questo verrà valorizzato
con i risultati della ricerca. In dettaglio $testi_riconosciuti[0] conterrà il testo che
si incrocia con l'intero criterio di ricerca, $testi_riconosciuti[1] conterrà il testo che soddisfa
il primo criterio posto tra parentesi, $testi_riconosciuti[2] il secondo e così via.
Il parametro flags può assumere i seguenti valori:
- PREG_OFFSET_CAPTURE
Se viene impostato questo flag, per ogni testo riconosciuto viene restituito
l'offset della stringa. Occorre notare che questo cambia il tipo di valore
restituito nell'array, infatti 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.
Il parametro
flags è disponibile a partire dalla versione 4.3.0
di PHP.
Normalemente la ricerca parte dall'inizio della stringa oggetto di ricerca. Con il parametro
opzionale offset si può specificare da dove cominciare
la ricerca. Equivale a passare substr()($testo, $offset) alla funzione
preg_match() al posto del parametro testo.
Il parametro offset è disponibile a partire dalla versione 4.3.3 di
PHP.
La funzione preg_match() restituisce il numero di volte in cui è avvenuto
il riconoscimento del criterio. Questo può essere 0
(nessun riconoscimento) oppure 1 se preg_match() si ferma dopo
il primo riconoscimento. In condizioni normali, preg_match_all()
continua il riconoscimento fino alla fine del parametro
testo.
preg_match() restituirà FALSE se si verifica un errore.
Suggerimento:
Non utilizzare la funzione preg_match() se si desidera controllare
se una stringa è contenuta in un'altra. Piuttosto utilizzare
strpos() oppure strstr()
che sono più veloci.
Esempio 1. Ricerca del testo "php"
<?php // La lettera "i" dopo i delimitatori indica una ricerca case-insensitive if (preg_match("/php/i", "PHP è il linguaggio scelto.")) { echo "Il riconoscimento è avvenuto."; } else { echo "Testo non riconosciuto."; } ?>
|
|
Esempio 2. Cerca la parola "web"
<?php // La lettera \b nel criterio indica i limiti della parola. Così verrà riconosciuta solo // la parola "web" e non parte di una parola più lunga come "webbing" oppure "cobweb" if (preg_match("/\bweb\b/i", "PHP è un linguaggio di programmazione per il web scelto da molti.")) { echo "Il riconoscimento è avvenuto."; } else { echo "Testo non riconosciuto."; } if (preg_match("/\bweb\b/i", "PHP è un linguaggio di programmazione installato su molti website")) { echo "Il riconoscimento è avvenuto."; } else { echo "Testo non riconosciuto."; } ?>
|
|
Esempio 3. Estrapolazione del dominio da un URL
<?php // come ottenere il nome dell'host da un URL preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.php.net/index.html", $matches); $NomeHost = $matches[2]; // come ottenere gli ultimi due segmenti del nome dell'host preg_match("/[^\.\/]+\.[^\.\/]+$/",$NomeHost,$matches); echo "Nome del dominio: {$matches[0]}\n"; ?>
|
L'esempio visualizzerà:
Nome del dominio: php.net |
|
Vedere anche preg_match_all(),
preg_replace() e
preg_split().