logo

Funzione PHP preg_match()

La funzione preg_match() è una funzione incorporata di PHP che esegue una corrispondenza di espressioni regolari. Questa funzione cerca il modello nella stringa e restituisce vero se il modello esiste, altrimenti restituisce falso.

Generalmente, la ricerca inizia dall'inizio del parametro stringa $subject. Il parametro opzionale $offset viene utilizzato per avviare la ricerca dalla posizione specificata.

Sintassi

 int preg_match (string $pattern, string $subject, array $matches, int $flags, int $offset) 

Nota: $offset è un parametro opzionale che specifica la posizione da cui iniziare la ricerca.

Parametri

Questa funzione accetta cinque parametri, descritti di seguito:

modello

È un parametro di tipo stringa. Questo parametro contiene il modello da cercare come stringa.

soggetto

Questo parametro contiene la stringa di input in cui cerchiamo pattern.

partite

Se viene fornito il parametromatch, conterrà i risultati della ricerca.

corrispondenze[0] - Conterrà il testo corrispondente al modello completo.

partite[1] - Conterrà il testo che corrisponde al primo sottomodello tra parentesi catturato e così via.

bandiere

albero binario trasversale per corrispondenza

I flag possono avere i seguenti flag indicati di seguito:

    PREG_OFFSET_CAPTURE:Se questo flag viene passato in preg_match(), per ogni corrispondenza che si verifica verrà restituito anche l'offset della stringa appendente.PREG_UNMATCHED_AS_NULL:Se questo flag viene passato in preg_match(), il sottomodello senza corrispondenza verrà segnalato come NULL, altrimenti verrà segnalato come stringa vuota.

compensare

Per impostazione predefinita, la ricerca inizia dall'inizio del parametro $subject. Il parametro offset viene utilizzato per specificare il luogo in cui inizierà la ricerca. È un parametro facoltativo.

Tipo di reso

La funzione preg_match() restituisce true se il pattern corrisponde, altrimenti restituisce false.

Nota: se vuoi solo verificare se una stringa è contenuta in un'altra stringa, non utilizzare la funzione preg_match(). Usa la funzione strpos() perché sarà più veloce.

Esempi

 <?php //initialize a variable of string type $site = 'javatpoint'; preg_match('/(java)(t)(point)/', $site, $matches, PREG_OFFSET_CAPTURE); //display the matches result print_r($matches); ?> 

Produzione:

 Array ( [0] =&gt; Array ( [0] =&gt; javatpoint [1] =&gt; 0 ) [1] =&gt; Array ( [0] =&gt; java [1] =&gt; 0 ) [2] =&gt; Array ( [0] =&gt; t [1] =&gt; 4 ) [3] =&gt; Array ( [0] =&gt; point [1] =&gt; 5 ) ) 

Possiamo vedere l'output di cui sopra come indicato di seguito per capirlo meglio.

operatori javascript
 Array ( [0] =&gt; Array ( [0] =&gt; javatpoint [1] =&gt; 0 ) [1] =&gt; Array ( [0] =&gt; java [1] =&gt; 0 ) [2] =&gt; Array ( [0] =&gt; t [1] =&gt; 4 ) [3] =&gt; Array ( [0] =&gt; point [1] =&gt; 5 ) ) 

Esempi: ricerca senza distinzione tra maiuscole e minuscole

 <?php //initialize a variable of string type $website = 'JTP is a best online platform to learn.'; //case insensitive search for word jtp //The 'i' after pattern delimiter indicates case-insensitive search $res = preg_match('/jtp/i', $website, $matches); if ($res) { echo 'Pattern matched in string.</br>&apos;; print_r($matches); } else { echo &apos;Pattern not matched in string.&apos;; } ?&gt; 

Produzione:

 Pattern matched in string. Array ( [0] =&gt; JTP ) 

Esempi: utilizzando il confine di parola ()

 <?php /* The  indicates the word boundary in the pattern. So, it matches only the distinct word like 'web', and words like 'coreweb' or ' webinar' do not match partially.*/ if (preg_match('/web/i', 'PHP is a web scripting language.')) { echo 'A match was found. </br>&apos;; } else { echo &apos;A match was not found. <br>&apos;; } if (preg_match(&apos;/web/i&apos;, &apos;PHP is a website scripting language.&apos;)) { echo &apos;A match was found.&apos;; } else { echo &apos;A match was not found.&apos;; } ?&gt; 

Produzione:

 A match was found. A match was not found. 

Esempi: estrarre il nome di dominio dall'URL

 

Produzione:

 Domain name is: javatpoint.com 

Sintassi Regex (espressione regolare).

[abc] Corrisponde a un singolo carattere: a, b o c
[^abc] Corrisponde a qualsiasi singolo carattere tranne a, b o c
[a-z] Corrisponde a qualsiasi singolo carattere nell'intervallo a-z
[a-zA-Z] Qualsiasi singolo carattere compreso nell'intervallo a-z o A-Z
^ Inizio riga
$ Fine della riga
UN Inizio della stringa
Con Fine della corda
. Qualsiasi singolo carattere
S Qualsiasi carattere di spazio bianco
S Qualsiasi carattere diverso da uno spazio vuoto
D Qualsiasi cifra
D Qualsiasi non-cifra
In Qualsiasi carattere di una parola (lettera, numero, carattere di sottolineatura)
IN Qualsiasi carattere non verbale
B Controllo dei confini delle parole
/?/ Inizia e termina l'espressione regolare
(?) Cattura tutto ciò che è racchiuso tra parentesi ()
(a|b) a o b
UN? Zero o uno di a
UN* Zero o più di a
a+ Uno o più a
un{3} Esattamente 3 di a
un{3,} 3 o più di a
un{3,6} Tra il 3 e il 6 dell'a
io Controllo senza distinzione tra maiuscole e minuscole
M Fai corrispondere il punto alle nuove righe
X Ignora gli spazi bianchi nelle espressioni regolari

Spiegazione del modello '[^[a-zA-Z0-9._-] +@[a-zA-Z0-9-]+.[a-zA-Z.]{2,5}$/]'

    ''/?/''Mostra l'inizio e la fine dell'espressione regolare.'[^[a-zA-Z0-9._-]'Corrisponde a qualsiasi lettera maiuscola o minuscola, numero compreso tra 0 e 9, punto, carattere di sottolineatura o trattino.'+@[a-zA-Z0-9-]'Corrisponde al simbolo @ seguito dalle lettere maiuscole o minuscole, dai numeri compresi tra 0 e 9 o dai trattini.'+.[a-zA-Z.]{2.5}$/'Il punto viene sottoposto a escape utilizzando la barra rovesciata e quindi corrisponde a qualsiasi lettera minuscola o maiuscola con una lunghezza compresa tra 2 e 5 alla fine della stringa.