PHP preg_match(): espressioni regolari (Regex)
Cos'è l'espressione regolare in PHP?
Espressione regolare PHP noti anche come regex sono potenti algoritmi di pattern matching che possono essere eseguiti in una singola espressione. Le espressioni regolari utilizzano operatori aritmetici come (+,-,^) per creare espressioni complesse. Possono aiutarti a svolgere attività come la convalida di indirizzi email, indirizzi IP ecc.
Perché usare le espressioni regolari
- Le espressioni regolari PHP semplificano l'identificazione di modelli nei dati di stringa chiamando una singola funzione. Questo ci fa risparmiare tempo nella codifica.
- Durante la convalida di input utente come indirizzo e-mail, nomi di dominio, numeri di telefono, indirizzi IP,
- Evidenziare le parole chiave nei risultati di ricerca
- Quando crei un modello HTML personalizzato. Regex in PHP può essere utilizzato per identificare i tag del modello e sostituirli con dati effettivi.
Funzioni di espressione regolare integrate in PHP
PHP ha funzioni integrate che ci consentono di lavorare con funzioni regolari che impareremo in questo tutorial sulle espressioni regolari di PHP. Diamo un'occhiata alle funzioni delle espressioni regolari comunemente utilizzate in PHP.
- preg_match() in PHP – questa funzione viene utilizzata per eseguire la corrispondenza dei modelli in PHP su una stringa. Restituisce vero se viene trovata una corrispondenza e falso se non viene trovata.
- preg_split() in PHP: questa funzione viene utilizzata per eseguire un pattern match su una stringa e quindi dividere i risultati in un array numerico
- preg_replace() in PHP – questa funzione viene utilizzata per eseguire un pattern match su una stringa e quindi sostituire la corrispondenza con il testo specificato.
Di seguito è riportata la sintassi per una funzione di espressione regolare come PHP preg_match(), PHP preg_split() o PHP preg_replace().
<?php function_name('/pattern/',subject); ?>
QUI,
- “nome_funzione(…)” è PHP preg_match(), PHP preg_split() o PHP preg_replace().
- “/…/” Le barre indicano l'inizio e la fine della nostra funzione PHP regex tester
- “'/pattern/'” è il pattern che dobbiamo abbinare
- "oggetto" è la stringa di testo con cui confrontare
Diamo ora un'occhiata ad esempi pratici che implementano le funzioni regex PHP di cui sopra.
Preg_match() in PHP
Il primo esempio utilizza la funzione preg_match() in PHP per eseguire un semplice pattern match per la parola guru in un dato URL.
Il codice seguente mostra l'implementazione della funzione tester preg_match() per l'esempio precedente.
<?php $my_url = "www.guru99.com"; if (preg_match("/guru/", $my_url)) { echo "the url $my_url contains guru"; } else { echo "the url $my_url does not contain guru"; } ?>
Passare all'URL http://localhost/phptuts/preg_match_simple.php
Esaminiamo la parte di codice responsabile del nostro output”preg_match('/guru/', $mio_url)” QUI,
- “preg_match(…)” è la funzione regex PHP
- “'/guru/'” è il modello di espressione regolare da abbinare
- "$my_url" è la variabile contenente il testo da confrontare.
Lo schema seguente riassume i punti precedenti
PHP Preg_split()
Diamo ora un'occhiata a un altro esempio che utilizza la funzione preg_split() in PHP.
Prenderemo una frase di stringa e la esploderemo in un array; il modello da abbinare è uno spazio singolo.
La stringa di testo da utilizzare in questo esempio è "I Love Regular Expressions".
Il codice seguente illustra l'implementazione dell'esempio precedente.
<?php $my_text="I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
Passare all'URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Diamo ora un'occhiata a preg_replace() in Funzione PHP che esegue una corrispondenza di pattern e quindi sostituisce il pattern con qualcos'altro.
Il codice seguente cerca la parola guru in a stringa.
Sostituisce la parola guru con la parola guru circondata da codice css che evidenzia il colore di sfondo.
<?php $text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com"; $text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text); echo $text; ?>
Supponendo che tu abbia salvato il file preg_replace.php, browser nell'URL http://localhost/phptuts/preg_replace.php
Metacaratteri delle espressioni regolari
Gli esempi sopra riportati hanno utilizzato pattern molto basilari; i metacaratteri ci permettono semplicemente di eseguire corrispondenze di pattern più complesse, come testare la validità di un indirizzo email. Diamo ora un'occhiata ai metacaratteri comunemente utilizzati.
Metacarattere | Descrizione | Esempio |
---|---|---|
. | Corrisponde a qualsiasi singolo carattere tranne una nuova riga | /./ corrisponde a tutto ciò che ha un singolo carattere |
^ | Corrisponde all'inizio o alla stringa/esclude i caratteri | /^PH/ corrisponde a qualsiasi stringa che inizia con PH |
$ | Corrisponde al modello alla fine della stringa | /com$/ corrisponde a guru99.com,yahoo.com ecc. |
* | Corrisponde a qualsiasi zero (0) o più caratteri | /com*/ corrisponde a computer, comunicazione, ecc. |
+ | Richiede che i caratteri precedenti appaiano almeno una volta | /yah+oo/ corrisponde a yahoo |
\ | Utilizzato per sfuggire ai metacaratteri | /yahoo+\.com/ tratta il punto come un valore letterale |
[...] | Classe di caratteri | /[abc]/ corrisponde ad abc |
az | Corrisponde alle lettere minuscole | /az/ corrisponde a bello, felice, ecc. |
AZ | Corrisponde alle lettere maiuscole | /AZ/ corrisponde a COSA, COME, PERCHÉ ecc. |
0-9 | Corrisponde a qualsiasi numero compreso tra 0 e 9 | /0-4/ corrisponde a 0,1,2,3,4 |
L'elenco precedente fornisce solo i metacaratteri più comunemente utilizzati nelle espressioni regolari.
Diamo ora un'occhiata a un esempio piuttosto complesso che verifica la validità di un indirizzo email.
<?php $my_email = "name@company.com"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email is a valid email address"; } else { echo "$my_email is NOT a valid email address"; } ?>
Spiegazione del modello “[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] "
QUI,
- “'/…/'” inizia e termina l'espressione regolare
- "^[a-zA-Z0-9._-]" corrisponde a qualsiasi lettera maiuscola o minuscola, numeri compresi tra 0 e 9 e punti, trattini bassi o trattini.
- “+@[a-zA-Z0-9-]” corrisponde al simbolo @ seguito da lettere minuscole o maiuscole, numeri compresi tra 0 e 9 o trattini.
- "+\.[a-zA-Z.]{2,5}$/" esegue l'escape del punto utilizzando la barra rovesciata, quindi corrisponde a qualsiasi lettera minuscola o maiuscola con una lunghezza di carattere compresa tra 2 e 5 alla fine della stringa.
Passare all'URL http://localhost/phptuts/preg_match.php
Come puoi vedere dall'analisi dell'esempio sopra, i metacaratteri sono molto potenti quando si tratta di abbinare modelli.
Sintesi
- Un'espressione regolare o Regex in PHP è un algoritmo di corrispondenza dei modelli
- Le espressioni regolari sono molto utili quando si eseguono controlli di convalida, si creano sistemi di modelli HTML che riconoscono i tag, ecc.
- PHP ha funzioni integrate, vale a dire PHP preg_match(), PHP preg_split() e PHP preg_replace() che supportano le espressioni regolari.
- I metacaratteri ci permettono di creare modelli complessi