Manuale PHP
Indietro |  | Avanti

# preg_match

(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().

Indietro | Partenza | Avanti
preg_match_all | Risali | preg_quote