PHP preg_match(): Regulære udtryk (Regex)
Hvad er regulært udtryk i PHP?
PHP regulært udtryk også kendt som regex er kraftfulde mønstertilpasningsalgoritmer, der kan udføres i et enkelt udtryk. Regulære udtryk bruger aritmetiske operatorer såsom (+,-,^) til at skabe komplekse udtryk. De kan hjælpe dig med at udføre opgaver såsom validering af e-mail-adresser, IP-adresse osv.
Hvorfor bruge regulære udtryk
- PHP Regulære udtryk forenkler identifikation af mønstre i strengdata ved at kalde en enkelt funktion. Dette sparer os for kodningstid.
- Ved validering af brugerinput såsom e-mailadresse, domænenavne, telefonnumre, IP-adresser,
- Fremhævelse af søgeord i søgeresultater
- Når du opretter en tilpasset HTML-skabelon. Regex i PHP kan bruges til at identificere skabelontags og erstatte dem med faktiske data.
Indbyggede regulære udtryksfunktioner i PHP
PHP har indbygget funktioner, der giver os mulighed for at arbejde med almindelige funktioner, som vi vil lære i denne PHP Regular Expressions tutorial. Lad os se på de almindeligt anvendte regulære udtryksfunktioner i PHP.
- preg_match() i PHP – denne funktion bruges til at udføre mønstermatching i PHP på en streng. Det returnerer sandt, hvis et match er fundet, og falsk hvis et match ikke er fundet.
- preg_split() i PHP – denne funktion bruges til at udføre et mønstermatch på en streng og derefter opdele resultaterne i et numerisk array
- preg_replace() i PHP – denne funktion bruges til at udføre et mønstermatch på en streng og derefter erstatte matchet med den angivne tekst.
Nedenfor er syntaksen for en regulært udtryksfunktion såsom PHP preg_match(), PHP preg_split() eller PHP preg_replace().
<?php function_name('/pattern/',subject); ?>
HER,
- "funktionsnavn(...)" er enten PHP preg_match(), PHP preg_split() eller PHP preg_replace().
- “/…/” De fremadrettede skråstreger angiver begyndelsen og slutningen af vores PHP-regex-testerfunktion
- "'/pattern/'" er det mønster, som vi skal matche
- "emne" er den tekststreng, der skal matches mod
Lad os nu se på praktiske eksempler, der implementerer ovenstående PHP regex-funktioner.
Preg_match() i PHP
Det første eksempel bruger funktionen preg_match() i PHP til at udføre et simpelt mønstermatch for ordet guru i en given URL.
Koden nedenfor viser implementeringen af preg_match() testerfunktionen for ovenstående eksempel.
<?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"; } ?>
Gå til URL'en http://localhost/phptuts/preg_match_simple.php
Lad os undersøge den del af koden, der er ansvarlig for vores output "preg_match('/guru/', $my_url)" HER,
- "preg_match(...)" er PHP regex-funktionen
- "'/guru/'" er det regulære udtryksmønster, der skal matches
- "$my_url" er den variabel, der indeholder teksten, der skal matches mod.
Diagrammet nedenfor opsummerer ovenstående punkter
PHP Preg_split()
Lad os nu se på et andet eksempel, der bruger preg_split() i PHP-funktionen.
Vi vil tage en strengfrase og eksplodere den til et array; mønsteret, der skal matches, er et enkelt mellemrum.
Tekststrengen, der skal bruges i dette eksempel, er "Jeg elsker regulære udtryk".
Koden nedenfor illustrerer implementeringen af ovenstående eksempel.
<?php $my_text="I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
Gå til URL'en http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Lad os nu se på preg_replace() i PHP funktion der udfører en mønstermatch og derefter erstatter mønsteret med noget andet.
Koden nedenfor søger efter ordet guru i en streng.
Det erstatter ordet guru med ordet guru omgivet af css-kode, der fremhæver baggrundsfarven.
<?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; ?>
Forudsat at du har gemt filen preg_replace.php, browser til URL'en http://localhost/phptuts/preg_replace.php
Regulære udtryks metakarakterer
Ovenstående eksempler brugte meget grundlæggende mønstre; metategn giver os simpelthen mulighed for at udføre mere komplekse mønstermatches, såsom at teste gyldigheden af en e-mailadresse. Lad os nu se på de almindeligt anvendte metakarakterer.
metategn | Description | Eksempel |
---|---|---|
. | Matcher ethvert enkelt tegn undtagen en ny linje | /./ matcher alt, der har et enkelt tegn |
^ | Matcher begyndelsen af eller streng / ekskluderer tegn | /^PH/ matcher enhver streng, der starter med PH |
$ | Matcher mønsteret i enden af snoren | /com$/ matcher guru99.com, yahoo.com Etc. |
* | Matcher alle nul (0) eller flere tegn | /com*/ matcher computer, kommunikation osv. |
+ | Kræver at foregående tegn vises mindst én gang | /yah+oo/ matcher yahoo |
\ | Bruges til at undslippe metakarakterer | /yahoo+\.com/ behandler prikken som en bogstavelig værdi |
[...] | Karakter klasse | /[abc]/ matcher abc |
AZ | Matcher små bogstaver | /az/ matcher cool, glad osv. |
AZ | Matcher store bogstaver | /AZ/ matcher HVAD, HVORDAN, HVORFOR osv. |
0-9 | Matcher ethvert tal mellem 0 og 9 | /0-4/ matcher 0,1,2,3,4 |
Ovenstående liste giver kun de mest brugte metategn i regulære udtryk.
Lad os nu se på et ret komplekst eksempel, der kontrollerer gyldigheden af en e-mailadresse.
<?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"; } ?>
Forklaring af mønsteret "[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] ”
HER,
- "'/.../'" starter og afslutter det regulære udtryk
- "^[a-zA-Z0-9._-]" matcher alle små eller store bogstaver, tal mellem 0 og 9 og prikker, understregninger eller bindestreger.
- "+@[a-zA-Z0-9-]" matcher @-symbolet efterfulgt af små eller store bogstaver, tal mellem 0 og 9 eller bindestreger.
- "+\.[a-zA-Z.]{2,5}$/" undslipper prikken ved hjælp af omvendt skråstreg og matcher derefter alle små eller store bogstaver med en tegnlængde mellem 2 og 5 i slutningen af strengen.
Gå til URL'en http://localhost/phptuts/preg_match.php
Som du kan se fra ovenstående eksempelopdeling, er metategn meget kraftfulde, når det kommer til at matche mønstre.
Resumé
- Et regulært udtryk eller regex i PHP er en mønstermatchalgoritme
- Regulære udtryk er meget nyttige, når du udfører valideringstjek, laver HTML-skabelonsystemer, der genkender tags osv.
- PHP har indbygget funktioner, nemlig PHP preg_match(), PHP preg_split() og PHP preg_replace(), der understøtter regulære udtryk.
- Metakarakterer giver os mulighed for at skabe komplekse mønstre