PHP preg_match(): espressioni regolari (Regex)

โšก Riepilogo intelligente

Le espressioni regolari in PHP sono strumenti di corrispondenza di pattern che consentono di convalidare, suddividere e sostituire il testo in un'unica espressione. Questa guida illustra le funzioni principali preg_match, preg_split e preg_replace, spiega i metacaratteri comuni e crea passo dopo passo un pattern funzionante per la convalida degli indirizzi email.

  • ๐Ÿงฉ Che cos'รจ Regex: Un'espressione regolare รจ uno schema che descrive un testo, consentendo a una singola funzione di convalidare, cercare o trasformare stringhe.
  • โœ… preg_match: La funzione preg_match verifica se un pattern compare in una stringa e restituisce true alla prima corrispondenza, ideale per la validazione.
  • โœ‚๏ธ preg_split: preg_split suddivide una stringa in un array in corrispondenza di ogni occorrenza del pattern, ad esempio dividendo una frase in base agli spazi.
  • ๐Ÿ” preg_replace: preg_replace trova ogni corrispondenza di un modello e la sostituisce con un nuovo testo, utile per la creazione di modelli e l'evidenziazione.
  • ๐Ÿ”ค Metapersonaggi: Simboli come ., ^, $, * e + creano modelli complessi, ad esempio ancorando una corrispondenza all'inizio o alla fine.
  • ???? Modello di email: Le classi di caratteri e i quantificatori si combinano in un unico schema che verifica se un indirizzo email รจ ben formato.
  • ๐Ÿค– Assistenza AI: Gli strumenti di intelligenza artificiale possono generare espressioni regolari a partire da una semplice descrizione e spiegare o correggere un modello complesso giร  esistente.

Espressioni regolari PHP

Che cosa sono le espressioni regolari in PHP?

espressioni regolari PHPLe espressioni regolari, note anche come regex, sono un potente strumento di corrispondenza di pattern che puรฒ essere utilizzato con una singola espressione. Le espressioni regolari utilizzano caratteri speciali come +, - e ^ per creare espressioni complesse. Possono essere utili per svolgere attivitร  come la convalida di indirizzi email, indirizzi IP e altro ancora.

Perchรฉ usare le espressioni regolari

  • Le espressioni regolari in PHP semplificano l'identificazione di pattern nei dati di tipo stringa, consentendo di richiamare una singola funzione. Questo ci fa risparmiare tempo nella programmazione.
  • Durante la convalida dell'input dell'utente, come indirizzi e-mail, nomi di dominio, numeri di telefono e 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 dispone di funzioni integrate che ci permettono di lavorare con le espressioni regolari, che impareremo in questo tutorial. Analizziamo le funzioni di espressione regolare piรน comunemente utilizzate in PHP.

  • preg_match() in PHP โ€“ questa funzione viene utilizzata per eseguire la corrispondenza di pattern su una stringa. Restituisce true se viene trovata una corrispondenza e false in caso contrario.
  • preg_split() in PHP โ€“ questa funzione viene utilizzata per eseguire una corrispondenza di pattern su una stringa e quindi suddividere 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 preg_match(), preg_split() o preg_replace().

<?php
function_name('/pattern/',subject);
?>

QUI,

  • โ€œfunction_name(โ€ฆ)โ€ puรฒ essere preg_match(), preg_split() o preg_replace().
  • โ€œ/โ€ฆ/โ€ le barre oblique indicano lโ€™inizio e la fine della nostra espressione regolare
  • โ€œ'/pattern/'โ€ รจ il modello che dobbiamo abbinare
  • "oggetto" รจ la stringa di testo con cui confrontare

Vediamo ora alcuni esempi pratici che implementano le funzioni regex di PHP descritte in precedenza.

Preg_match() in PHP

Il primo esempio utilizza la funzione preg_match() per eseguire una semplice corrispondenza di pattern per la parola guru in un dato URL.

Il codice seguente mostra l'implementazione della funzione 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 al URL http://localhost/phptuts/preg_match_simple.php

Funzioni di espressione regolare integrate

Esaminiamo la parte del codice responsabile del nostro output, preg_match('/guru/', $my_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.

PHP Preg_split()

Vediamo ora un altro esempio che utilizza la funzione preg_split().

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 al URL http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Ora esaminiamo la funzione preg_replace() 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, vai al URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Metacaratteri delle espressioni regolari

Gli esempi precedenti utilizzavano schemi molto semplici. I metacaratteri ci consentono di eseguire corrispondenze di pattern piรน complesse, come ad esempio verificare la validitร  di un indirizzo email. Analizziamo ora i metacaratteri piรน 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 di una stringa o esclude i caratteri /^PH/ corrisponde a qualsiasi stringa che inizia con PH
$ Corrisponde a uno schema alla fine della stringa /com$/ corrisponde a guru99.com, yahoo.com ecc.
* Corrisponde a zero o piรน dei caratteri precedenti /com*/ corrisponde a computer, comunicazione, ecc.
+ Richiede che il/i carattere/i precedente/i compaia/compariscano 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 a, b o c
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.

Analizziamo ora 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 di convalida dell'indirizzo email

QUI,

  • โ€œ/โ€ฆ/โ€ avvia e termina lโ€™espressione regolare
  • โ€œ^[a-zA-Z0-9._-]โ€ corrisponde a qualsiasi lettera minuscola o maiuscola, numeri compresi tra 0 e 9, 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 usando la barra rovesciata, quindi corrisponde a qualsiasi lettera minuscola o maiuscola con una lunghezza di caratteri compresa tra 2 e 5 alla fine della stringa.

Passare al URL http://localhost/phptuts/preg_match.php

Modello di validazione email PHP

Come si puรฒ notare dall'analisi precedente, i metacaratteri sono molto potenti quando si tratta di individuare modelli.

DOMANDE FREQUENTI

preg_match si ferma alla prima corrispondenza e riempie $matches con quel singolo risultato. preg_match_all trova ogni corrispondenza nella stringa e le restituisce tutte in un array annidato, che si adatta ad esempiotracelementi ripetuti.

I modificatori seguono il delimitatore di chiusura e cambiano il comportamento di corrispondenza. Il modificatore i rende il pattern insensibile alle maiuscole/minuscole, m tratta ogni riga separatamente per ^ e $, e s fa sรฌ che il punto corrisponda ai caratteri di nuova riga, come in /guru/i.

Racchiudi parti del pattern tra parentesi per creare gruppi di cattura. Dopo preg_match, la corrispondenza completa si trova in $matches[0] e ogni gruppo segue in $matches[1], $matches[2] e cosรฌ via.

Sรฌ. Descrivi il testo che vuoi abbinare, ad esempio un numero di telefono o il formato di una data, e l'IA puรฒ generare il modello e un esempio di preg_match. Testalo con input reali e casi limite prima di farvi affidamento.

Sรฌ. Incolla lo schema e l'IA puรฒ scomporlo token per token, spiegare a cosa corrisponde ogni parte e indicare perchรฉ non funziona con determinati input, per poi suggerire una versione corretta.

Riassumi questo post con: