(PHP 4, PHP 5)
preg_match — Riconoscimento con espressioni regolari
$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:
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.
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.
Example #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.";
}
?>
Example #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.";
}
?>
Example #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().