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

Indbygget regulære udtryksfunktioner

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

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

PHP Preg_replace()

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

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

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