Anumang character sa php regular na expression. Mga regular na expression (mga pattern)

) Nagpakita ako sa iyo ng isang halimbawa ng paggamit ng mga regular na expression upang makahanap ng mga partikular na piraso source code mga pahina. Ngayon ay matututunan natin kung paano isulat ang mga ito sa ating sarili. Ang kasanayang ito ay makakatulong sa iyo na magsulat, i-clear ang teksto mula sa hindi kinakailangang mga fragment, hanapin ang mga kinakailangang bahagi malalaking volume text at iba pa.

Ang paksang ito ay medyo mahirap, ngunit susubukan ko maikling porma pinakamaliwanagan mahahalagang puntos. Hindi ko alam kung gaano ako magiging matagumpay, ngunit umaasa akong magiging kapaki-pakinabang ang aralin.
Kaya, magsimula tayo sa katotohanan na mayroong ilang mga function para sa pagtatrabaho sa mga regular na expression sa PHP, ngunit tatlo ang madalas na ginagamit:

  • preg_replace — maghanap at palitan ang text na tumutugma sa isang regular na expression;
  • preg_match - isang regular na paghahanap lamang;
  • preg_split - maghanap at hatiin ang teksto.

Sa pamamagitan ng kahit na, sa mga nakaraang aralin ay eksaktong ginamit namin ang mga ito. Mas tiyak, sa halip na preg_match mayroong preg_match_all, ngunit ito ay mahalagang pareho, tanging ang huli lamang ang hindi nakakaabala sa paghahanap pagkatapos ng unang paghahanap. Iyon ay, kung gagamit tayo ng preg_match, hindi natin mahahanap ang lahat ng mga pangyayari, ngunit ang una lamang.

Ang pagpili kung aling function ang gagamitin sa kung aling sitwasyon ay medyo simple. Kailangan naming palitan - gumagamit kami ng palitan, tulad ng sa kaso kung kailan kailangan naming alisin ang mga hindi kinakailangang bahagi ng page code, tandaan?

$page = preg_replace("/ ^]/i", "", $page); $page = preg_replace("/ ^]/i", "", $page); $page = str_replace("","", $page);

Ang unang parameter ng function ay isang regular na character na tumutukoy kung ano ang hinahanap namin. Ang pangalawa ay ang pinapalitan natin. Pangatlo - Saan tayo tumitingin? Samakatuwid, dito kinuha namin ang variable na $page at itinalaga ito ng resulta ng preg_replace function kung saan hinanap namin ang lahat ng uri ng input=checkbox, pati na rin ang pagbubukas at pagsasara ng mga label. Pinalitan nila ang mga ito ng ", ibig sabihin, tinanggal lang nila ang mga ito. Sana malinaw na ang lahat dito. Magpapatuloy tayo sa pagsusuri sa mismong expression (ang unang parameter ng function) ilang sandali.
Nagkaroon din ng isang halimbawa ng paggamit ng preg_match_all, na kapaki-pakinabang para sa paghahanap ng lahat ng mga link sa natitirang teksto. Kailangan namin ng mga link noon dahil naglalaman ang mga ito mga keyword, na na-parse namin. Narito ang nangyari:

Preg_match_all("/ ]+?>(.*?)<\/a>/uis",$page,$ok); para sa ($j=0; $j ".$ok[$j].""; }

Ang unang parameter ay muling isang regular na expression upang mahanap ang lahat ng mga link na natural na nakapaloob sa "a" na tag (kung hindi ka pamilyar sa html markup, pagkatapos ay basahin). Ang pangalawa ay isang variable na naglalaman ng teksto na hahanapin. Ang ikatlong parameter ay isang variable kung saan inilalagay ang resulta - $ok. Pagkatapos nito, ang natitira na lang ay dumaan sa lahat ng kinakailangang elemento ng $ok upang makuha ang mga pangunahing catches na kailangan natin. Hiwalay, dapat itong sabihin na sa output nakakakuha kami ng isang multidimensional array. Kaya naman ipinakita namin ito sa napakakomplikadong paraan: $ok[$j]. Upang tingnan ang istraktura ng array, gamitin ang function sa ibaba at mauunawaan mo ang lahat.

Print_r($ok);

Tila naayos na namin ang mga function na ginamit namin para sa aming trabaho. Ngayon ang natitira na lang ay upang matutunan kung paano isulat ang parehong mga regular na expression, na siyang unang parameter ng bawat isa sa mga pamamaraang ito. Lumipat tayo sa pinakamahalagang bagay.

Paano magsulat ng mga regular na pangungusap

Una, tingnan natin ang mga pangunahing istruktura. May mga pagpipilian ang mga ekspresyon. Ang mga ito ay tinukoy ng isang titik at nakasulat sa dulo, na pinangungunahan ng isang slash.

Bilang karagdagan, ang mga sumusunod na metacharacter ay sinusuportahan:

Ang mga metacharacter, sa turn, ay maaaring magkaroon ng mga modifier:

Well, ngayon ay maaari na tayong magpatuloy sa pagsusuri sa ating mga regular na pattern mula sa huling aralin. Batay sa mga palatandaan sa itaas, subukan nating maunawaan kung ano ang mayroon tayo. Narito ang expression:

/^]/i

Ang una at huling mga slash na "/" ay nagpapahiwatig na mayroong isang regular na expression sa loob ng mga ito. Kasabay nito, pagkatapos ng huling inilagay namin ang "i", ito ay isang pagpipilian, tulad ng sa unang talahanayan - huwag isaalang-alang ang kaso. Sa loob ng mga slash ay ang regular na pagkakasunod-sunod mismo. Nagsisimula ito sa mas mababa sa sign at input tag, at lahat ng darating pagkatapos nito hanggang sa period sign ay simpleng text na hahanapin. Ngunit ang tuldok mismo, at ang mga simbolo pagkatapos nito, ay mas kawili-wili. Sa kasong ito, ang pagtatayo ".*?" nangangahulugang anumang pagkakasunud-sunod ng mga character. Iyon ay, kung pagsasamahin lamang natin ang teksto at ang pagbuo na ito, pagkatapos ay pipiliin natin ang lahat ng teksto pagkatapos ng unang paglitaw at hanggang sa katapusan. Upang huminto, kailangan mong makatagpo ng alinman sa isang pangwakas na HTML na "higit sa" na tag o isang bagong character sa linya. Ang disenyong ito ay nagbibigay sa amin ng ganitong pagkakataon:

Ang mga character sa square bracket ay konektado sa pamamagitan ng lohikal na OR. Ang dulo ay mas malaki kaysa sa tanda O sa simula ng linya.
Iyon lang ang expression, sa loob nito itinakda namin ang kondisyon ng pagsisimula, gitna at wakas na kondisyon. Hindi mahirap, tama? Narito ang isang paglalarawan para sa kalinawan:

Tingnan natin ang isa pang bagay upang patatagin ang lahat. Naghanap kami ng mga link sa kanila:

/]+?>(.*?)<\/a>/uis

Binasa namin ang expression. Muli, itinatapon muna namin ang mga slash at mga pagpipilian. Ang mga flag na "uis" ay maliwanag, maliban sa "u", na hindi ko inilarawan - ipinapakita nito na gumagamit kami ng Unicode encoding. Wala na masyadong natitira. Ang simula ay ang tag na "a", na bubukas, pagkatapos ay darating ang klase

na nangangahulugang HINDI mas malaki sa o mas mababa kaysa sa (pagbubukas at pagsasara ng mga HTML tag), iyon ay, anumang mga character sa kasong ito. Ang “+?” ay idinaragdag sa klase, na nangangahulugang ang klase na ito ay 1 o higit pang beses (ngunit hindi bababa sa 1 beses para sigurado). At pagkatapos ay darating ang pagsasara ng html tag para sa "a" na tag. May text sa loob ng link na tinukoy ng grupo

Pagkatapos ng lahat, hindi namin alam kung anong uri ng teksto ang naroroon, kaya tinukoy namin ang ganoong grupo. At sa dulo ay may pansarang tag na "a":

Pakitandaan na tinatakasan namin ang slash gamit ang isang backslash upang ito ay maisip bilang simpleng text.

Phew. Ang paksa ay talagang medyo kumplikado, nangangailangan ito ng pagsasanay. Marahil ay gumagawa ako ng isang bagay na hindi lubos na mahusay at posible na lumikha ng iba, mas tamang mga regular na expression, ngunit ako ay nagtuturo sa sarili tulad mo, kaya't huwag husgahan nang mahigpit, sa halip ay ibahagi ang iyong mga pagpipilian sa mga komento. Gayundin, kung may hindi malinaw, ang mga komento at pahina ng contact ay nasa iyong serbisyo.

Ang mga regular na expression ay isang napakalakas, ngunit sa parehong oras mahirap maunawaan, string processing tool. Ilalarawan ko ang mga pangunahing punto. Ang isang regular na expression ay isang pattern ng string. Gamit ang template na ito, maaari kang maghanap para sa mga pangyayari, gumawa ng mga kapalit, at suriin para sa pagsunod sa template.

Mga panuntunan para sa paglikha ng isang pattern

Ang mga hangganan ng template ay dapat ipahiwatig ng ilang mga simbolo, kadalasang gumagamit ng " / ", ngunit mas gusto kong gamitin ang " # " dahil ang kasaganaan ng forward/backslashes ay maaaring makasilaw sa iyong mga mata, at ang mga hash mark ay karaniwang hindi ginagamit saanman. Kaya: " #HereBodyRegularExpression#"

Ginagamit ang mga panaklong sa loob ng isang regular na expression - ito ay mga subexpression na maaaring manipulahin, halimbawa:

#^/catalog/(+)/(+)\.html.*#

Idinisenyo ang expression na ito upang makuha ang mga parameter sa isang string URL. Sa simula ng linya mayroong isang espesyal na karakter " ^ " - ang ibig sabihin nito ay ang simula ng linya. Ang susunod ay " /catalog/" - walang mga espesyal na character dito, ito ay teksto lamang na dapat na nilalaman sa linya. Pagkatapos ay nakatagpo kami ng mga panaklong, ibig sabihin, naabot namin ang unang subexpression. Ang mga square bracket ay nagpapahiwatig ng maraming mga character na maaaring nasa linya sa lugar na ito. Ang sign " - " ay nangangahulugan ng enumeration. Sign " \ " nakakatakas sa mga espesyal na character. Kaya, sa unang subexpression maaari tayong magkaroon ng CAPITAL at maliliit na letra ng alpabetong Latin, mga numero mula 0 hanggang 9, underscore, gitling at tuldok. Ang gitling at tuldok ay mga espesyal na character, ngunit dito sila ay nakatakas, kaya narito ang mga simbolo lamang pagkatapos ng mga square bracket ay may isang karatula. + " - nangangahulugan ito na ang nakaraang character (at para sa amin ito ay isang set ng mga character na tinukoy sa mga square bracket) ay maaaring lumabas ng 1 o higit pang beses. Pagkatapos ay " / " ay isang simbolo lamang, at isang katulad na pangalawang subexpression. Pagkatapos ay dumating ang " \.html"anong ibig sabihin ng text" .html". At pagkatapos ay mga espesyal na character " .* "Ang tuldok ay nangangahulugang anumang karakter, at ang asterisk ay nangangahulugang anumang halaga ng nakaraang karakter. Ibig sabihin, pagkatapos ng " .html"Kahit ano pwede.

Indikasyon ng dami, mga quantifier

Sa itaas ay isinasaalang-alang na natin ang mga naturang simbolo na nagpapahiwatig ng bilang ng mga nakaraang simbolo, tulad ng + At * . Narito ang lahat ng mga posibilidad para sa pagtukoy ng mga dami:

Mga espesyal na karakter

Mayroong mga espesyal na pagdadaglat para sa ilang pangkat ng character:

"Kasakiman"

Tingnan natin ang konsepto ng regular na pagpapahayag ng kasakiman. Halimbawa, mayroong isang linya:

#()#

Nabasa namin: subexpression:

Mukhang tama ang lahat, umaangkop ang subexpression:

Ngunit angkop din ito:

Iyan ang makukuha natin, dahil... Ang mga regular na expression ay matakaw bilang default. Maaari mong alisin ang kasakiman gamit ang modifier " U", ganito:

#()#U

Mga modifier

Pagkatapos regular na pagpapahayag maaaring pumunta ang mga modifier: " #HereBodyRegularExpression#HereModifiers"Mga uri ng mga modifier:

i Pinapagana ang case-insensitive mode, i.e. malaki at maliit na titik sa ekspresyon ay hindi magkaiba.
m Isinasaad na ang tekstong hinahanap ay dapat ituring na binubuo ng maraming linya. Bilang default, tinatrato ng regular na expression engine ang text bilang isang string, anuman ang aktwal na ito. Alinsunod dito, ang mga metacharacter "^" at "$" ipahiwatig ang simula at wakas ng buong teksto. Kung tinukoy ang modifier na ito, ipahiwatig nila, ayon sa pagkakabanggit, ang simula at dulo ng bawat linya ng teksto.
s Ang default na metacharacter ay " . " ay hindi nagsasama ng isang newline na character sa kahulugan nito. Ang pagtukoy sa modifier na ito ay nag-aalis ng paghihigpit na ito.
U Tinatanggal ang regular na pagpapahayag ng kasakiman
u Pinapagana ang mga regular na expression upang gumana Cyrillic hanggang UTF-8, kung hindi, hindi ito gagana nang tama.

php Mga function para sa pagtatrabaho sa mga regular na expression

preg_replace

Hanapin at palitan:

Preg_replace (mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]]);

Ang bawat halaga ay maaaring isang string o isang array, kung sakali $paksa array - isang array ay ibinalik, kung hindi man ay isang string

preg_split

Hinahati ang isang string gamit ang isang regular na expression:

Preg_split (string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]]);

Nagbabalik ng array na binubuo ng mga substring ng ibinigay na string paksa, na nahahati sa mga hangganan na naaayon sa pattern pattern.

Magsimula tayo sa kung ano ang isang regular na expression. Kaya sagutin mo ako sa tanong na ito: mayroon bang "e" sa salitang "pagsubok"? "Kumain ka na!" sabi mo. Pagkatapos ay tatanungin kita ng pangalawang tanong, paano mo nahanap ang letrang "e" sa salitang "pagsusulit"? Ang sagot ay malinaw, kinuha namin ang unang karakter, iyon ay, "t" at ihambing ito sa kung ano ang hinahanap namin, iyon ay, sa "e". Kung hindi sila pantay, kunin natin ang pangalawang karakter, iyon ay, "e", at ihambing ito sa hinahanap natin, iyon ay, "e". Voila! May nakitang tugma. Sagot: Ang salitang "test" ay naglalaman ng letrang "e".

Ngayon sagutin mo ako ng isa pang tanong, nasaan ang regular na expression sa halimbawang ito? Sana nahulaan mo na ang regular na expression dito ay ang hinahanap natin sa salitang "pagsusulit". Ibig sabihin, ang letrang "e" sa halimbawang ito ay isang regular na expression.

Ano ang mga regular na expression na ginagamit para sa PHP? Sa aking pagsasanay, ginamit ang mga regular na expression, halimbawa, upang matukoy kung ang isang email address ay nabuo nang tama. Ginagamit din ang mga ganitong expression upang matukoy ang kawastuhan ng username at password. Gamit ang mga regular na expression, mahahanap mo ang address sa isang link at i-save ito. Maraming bagay ang maaari mong gawin Sa pamamagitan ng pagsusuri nito, matutukoy mo ang pangunahing function ng mga regular na expression, at dalawang panig. Pangunahing pag-andar, ito ay isang paghahanap para sa mga tugma sa isang string. Kasama sa mga side effect ang pag-save ng mga nakitang tugma at pagpapalit sa kanila.

Unang regular na pagpapahayag

Sa teorya, naiintindihan namin kung paano hanapin ang karakter na "e" sa salitang "pagsubok," ngunit paano ito ipinatupad sa pagsasanay? Upang gumamit ng mga regular na expression sa php, karaniwang ginagamit ang mga sumusunod na function:

preg_match("regular expression (pattern)", "variable kung saan isinasagawa ang paghahanap", "Variable kung saan naka-save ang resulta ng paghahanap (opsyonal na parameter)"); - Pagtutugma ng function
preg_replace("regular expression (pattern)", "What to replace the found match with", "variable kung saan ginawa ang pagpapalit"); - Palitan ang function

Simulan natin ang paggamit ng mga function na ito. Narito ang isang halimbawa ng paghahanap ng character na "e" sa salitang "test":

$a = "pagsusulit";
if(preg_match("/e/",$a)) echo "nahanap!!";

Inilalarawan ng code ang kundisyon: kung may makikitang tumutugma sa pattern sa variable na $a, pagkatapos ay ipakita ang mensaheng "nahanap!!" Tulad ng maaaring napansin mo, ang aming template ay matatagpuan sa pagitan ng dalawang "/". Sa kasong ito, ang simbolo na "/" sumisimbolo sa simula at wakas ng ating pattern. Sana malinaw na ito.

Ang lahat ng ito ay kawili-wili, siyempre... ngunit ang aming template ay napaka-simple, sa tingin mo ba? Pagkatapos ng lahat, bihira tayong makahanap ng ilang simbolo sa isang variable. Sa karamihan ng mga kaso, kailangan nating makahanap ng maraming mga character, at pati na rin ang mga hindi kilala. Paano maging? Magtakda tayo ng problema at subukang lutasin ito. Ipagpalagay na mayroon kaming isang string na binubuo ng mga numero at isang hindi kilalang letrang Ingles

Paano mahahanap ang liham na ito? Maaaring mayroong anumang titik ng alpabetong Ingles, kaya paano mo ito makikilala? Ikaw na mismo ang sumagot sa tanong mo, may kahit anong letra, ibig sabihin, nasa range from a to z. Maaari kang gumamit ng mga saklaw sa mga regular na expression. Kung hindi namin alam kung anong karakter ang hinahanap namin, ngunit alam naming sigurado na ang karakter na ito ay isang titik ng alpabetong Ingles, kung gayon ang entry ay ang mga sumusunod:

$a = "123a321";
if(preg_match("//",$a)) echo "nahanap!!";

Tandaan na ang hanay ay nakapaloob sa "[" "]" na mga bracket. Lahat ng nakapaloob sa naturang mga bracket ay tinukoy bilang isa simbolo, sa kasong ito ang simbolo ay mula a hanggang z. Kung kailangan nating makahanap ng hindi isang titik, ngunit isang numero, kung gayon ang entry ay magiging ganito:

$a = "abc1cba";
if(preg_match("//",$a)) echo "nahanap!!";

Gusto ko ring tandaan na ang mga regular na expression ay case sensitive, kaya ang mga character na "A" at "a" ay ganap na naiiba, upang maghanap para sa parehong mga character, sumulat ng ganito:

$a = "123a321";
if(preg_match("//",$a)) echo "nahanap!!";

Mayroon ding paghahanap para sa mga titik na Ruso, na isinasagawa sa parehong paraan tulad ng sa mga Ingles:

$a = "123×321";
if(preg_match("/[a-zA-Z]/",$a)) echo "nahanap!!";

Mga Metacharacter

Natutunan namin kung paano maghanap ng hindi kilalang character sa isang string. Ano ang gagawin kung kailangan nating maghanap ng ilang character? So-called metasymbols come to the rescue... Ipagpalagay na mayroon tayong string na may mga numero at titik, paano natin ito mailalarawan sa template? Kaya mo yan:

linya - 123a321
sample -

Hmm... talagang tumutugma ang template sa aming string, at kapag sinuri para sa pagsunod, ibibigay nito ang pinakahihintay na totoo! Ngunit ito ay isang uri ng isang masalimuot na rekord, sa palagay mo ba?

Narito kung paano paikliin ito:

linya - 123a321
sample - *

Para sa akin, ito ay mas maikli, ano ang "*" na simbolo? Ito ay ang parehong metasymbol, nangangahulugan ito na ang simbolo na aming inilarawan (ibig sabihin, isang simbolo na maaaring maglaman ng mga numero mula 0 hanggang 9 o mga titik ng alpabetong Ingles, mula a hanggang z) ay maaaring ulitin nang walang katiyakan, o higit sa isang beses. Oo Oo! Ang metasymbol na ito ay makakahanap ng tugma sa isang walang laman na variable, dahil kahit na ang kawalan ng simbolo na aming inilarawan ay babalik na totoo! Alalahanin mo ito

Ano ang iba pang metacharacter na naroroon?

Halimbawa, ang metacharacter na "+" Ito ay halos katulad ng metacharacter na "*" na may isang maliit na exception. Ang "*" ay babalik ng totoo kahit na walang character, at ang "+" ay titingnan ang presensya ng hindi bababa sa isang character. Iyon ay, kung ang isang linya ay nangangailangan ng presensya pinakamababa isang character pagkatapos ay gumamit ng "+" sa halip na "*"

Madalas ding ginagamit ang metacharacter na "?" Nangangahulugan ito na ang linya ay dapat maglaman ng hindi hihigit sa isang nais na character. Hayaan akong magbigay ng ilang halimbawa para sa huling dalawang metacharacter na inilarawan ko.

Ipagpalagay na kailangan nating suriin ang password ng user para sa tama. Isipin natin kung ano ang dapat na nilalaman ng password ng user? Well, una, ito ay dapat na hindi bababa sa isang character. Pangalawa, ito ay dapat na naglalaman lamang ng mga numero at titik ng alpabetong Ingles, kaya ang regular na expression ay magiging ganito:

$a = "qwerty12345";

Anong mga character ang pinayagan namin? Mga letrang Ingles ng anumang kaso at numero. Ngayon subukang mag-iwan ng blangkong linya sa halip na ang password.

$a = "";
if(preg_match("/+/",$a)) echo "Tama ang password";

Hindi mo makikita ang mensaheng "Tama ang password." Bakit? Dahil sinuri ng "+" metacharacter ang string upang makita kung mayroon itong kahit isang character.

At ngayon isang maliit na pandaraya, tingnan natin ang ating ekspresyon, hindi natin pinayagan, well, sabihin nating isang puwang dito, tama ba? maglagay ng puwang sa dulo ng password at tumakbo

$a = "qwerty12345";
if(preg_match("/+/",$a)) echo "Tama ang password";

At bakit natin nakikita ang ating mensahe tungkol sa tamang password? Ito ay medyo simple... Function preg_match(); hihinto ang pagsuri nito sa unang laban. Iyon ay, ang simbolo na "q" ay umaangkop sa pattern na inilarawan namin, at lahat ng iba pa ay hindi na mahalaga para sa function na Ano ang dapat nating gawin? Narito kung paano ito ayusin:

$a = "qwerty12345";
if(preg_match("/^+$/",$a)) echo "Tama ang password";

Sa pamamagitan ng pagdaragdag ng "^" sa simula ng isang expression at isang "$" sa dulo, sinasabi namin sa function kung ano ang dapat na tumugma sa pattern. lahat linya. Kung patakbuhin mo ang code na ito, hindi mo makikita ang mensahe, dahil mayroong isang ilegal na karakter sa dulo ng password - isang puwang

Ngayon, baguhin ang metacharacter na "+" sa metacharacter na "?". Ano sa tingin mo ang mangyayari? Tama, walang mensahe tungkol sa kawastuhan ng password, dahil ang password ay naglalaman ng higit sa isang character. Sana ay naipaliwanag ko nang maayos ang gawain ng tatlong madalas na ginagamit na metacharacter na ito

Minsan mas mabuti ang "hindi".

Hindi bababa sa natutunan namin upang suriin ang password ay tama, at iyon ay mabuti! Hayaan akong sabihin sa iyo ang tungkol sa isa pang paraan upang maghanap ng isang bagay sa isang string. Sabihin nating kailangan nating suriin para sa kawalan ng mga numero sa isang string. Paano ito gagawin? Narito ang linya:

(Partikular kong ipinakilala ang mga "-_+()" na mga simbolo dito upang ang buhay ay hindi magmukhang pulot...) Maaari naming bumalangkas ng sumusunod na expression:

Ngunit dapat mong aminin, hindi namin palaging alam kung anong mga character ang ginagamit sa isang linya, ngunit alam namin na tiyak na walang mga numero sa loob nito! Samakatuwid, magiging mas lohikal na magsulat lamang ng isang template na laktawan ang mga linya kung saan Hindi mga numero, at hindi ang mga kung saan mayroong "Oh Diyos ko, ang daming hindi maintindihang simbolo!!!". Narito ang isang halimbawa ng tamang pagkakabuo ng expression para sa mga ganitong problema:

$a = "a-_+()";
if(preg_match("/^[^0-9]+$/",$a)) echo "Walang numero!";

Paano natin ito nakamit? Pinasok namin ang simbolo Ngunit! ang cap "^" ([^0-9]) na nakalagay sa simula ay nagpapahiwatig na magkakaroon hindi dapat Sana ay naayos na ito

Well, dahan-dahan nating tapusin ito... Magbibigay ako ng dalawang halimbawa na may mga paliwanag, kung saan matututunan natin kung paano i-save ang resulta ng paghahanap sa isang variable, at matutunan kung paano suriin ang postal address para sa kawastuhan

Nakita ko ito at na-save!

Ang aking blog

$a = " Ang aking blog";
preg_match("/ /", $a);

Sa aming regular na expression, inilarawan namin ang lahat ng posibleng mga character na maaaring isama sa isang link. Nais ko ring bigyang pansin ang mga quote at "/" na mga character sa aming expression. Ang katotohanan ay ang "/" at ang quote ay mga espesyal na karakter mismo. At para makita ng template ang mga ito bilang mga ordinaryong simbolo, kailangan nating i-screen ang mga ito. Ginagawa ang pagtakas sa pamamagitan ng pagdaragdag ng backslash bago ang mga espesyal na character. sana malinaw

$a = " Ang aking blog";
preg_match("/ /", $a, $b);

Kaya, nang naaayon, kinakailangan na magdagdag ng karagdagang parameter sa anyo ng variable na $b, kung saan maiimbak ang nahanap na link. Kailangan mo ring malaman na ang resulta ng paghahanap ay inilalagay sa isang array. Samakatuwid, ang variable na $b ay isang array. Ang impormasyong hinahanap namin ay nasa ilalim ng index 1. Nangangahulugan ito na ang resulta ng paghahanap ay nasa variable na $b. Ipakita natin ang resulta sa screen:

$a = " Ang aking blog";
preg_match("/ /", $a, $b);
echo $b;

Ang tamang address ay ang susi sa tagumpay!

At panghuli, ang sagot sa tanong, tama ba ang e-mail? Una, kailangan mong malaman kung anong mga character ang pinapayagan sa mga address? Sa pagkakaalam ko, ang mga pinapayagang character ay kinabibilangan ng:

  • English letters, numbers, “_”, “-” ummmm everything seems to be... We will proceed from this.
  • Susunod mayroon kaming "@"
  • Pagkatapos, English letters
  • Susunod, period
  • At muli ang mga letrang Ingles...

Kaya ang regular na expression ay magiging ganito:

$a = " [email protected]";
if(preg_match("/^+@+.+$/", $a)) echo "tama ang e-mail address!";
else echo "HINDI nakasulat nang tama ang e-mail address!";

Buweno... Umaasa ako na ang gayong mga talaan ay hindi ka matakot ngayon, at lubos mong mauunawaan ang mga ito.

Sa wakas, may gusto akong sabihin. Ang artikulo ay naging masalimuot, at sa parehong oras ay sakop lamang ang bahagi ng mga posibilidad. Kung binabasa mo ang pangungusap na ito, malamang na nabasa mo na ito hanggang sa wakas, kung saan maraming salamat

Tungkol sa serye ng mga artikulo tungkol sa pagbuo ng isang cms blog, ang unang bahagi ng serye Idineklara kong sarado ito! Sa malapit na hinaharap sisimulan naming ipatupad ang admin panel, kaya huwag "lumipat" Kung mayroon kang anumang mga katanungan, ikalulugod kong sagutin. All the best to you, yan lang ang meron ako!