KompiuteriaiProgramavimas

PHP (įpraiška) - kas tai? Pavyzdžiai ir tikrinimo reguliarios išraiškos

Dirbant su tekstu į bet kurios šiuolaikinės programavimo kalba, kūrėjai nuolat susitikti su įvesties patvirtinimo tikslų laikymosi norimą modelį, ieškoti ir pakeisti bandymų fragmentai ir kiti tipai perdirbimo operacijų pobūdis informaciją. Plėtoti savo patvirtinimo algoritmai veda į praradimą metu, kodas suderinamumo ir sudėtingumo jos plėtrai ir modernizavimui.

Sparti interneto ir Web dizainas kalbų reikėjo universalus ir kompaktiškas priemonėmis teksto apdorojimo kūrimą su minimali suma, reikalinga šio kodo. Tai ne išimtis ir yra populiarus tarp pradedančiųjų ir profesionalų kūrėjams PHP kalba. Reguliari išraiška kalba kaip teksto šablonus supaprastinti tvarkymo tekstą užduotį ir sumažinti kodą dešimtys ir šimtai eilučių. Daug problemų negalima išspręsti ne visi ir be jo.

Reguliarūs išsireiškimai PHP

PHP kalba turi tris mechanizmus darbui su reguliarios išraiškos - «ereg», «mb_ereg» ir «preg». Dažniausiai yra sąsaja «preg», kurio funkcijos suteikia galimybę į PCRE reguliaraus išraiška paramos, iš pradžių buvo sukurti Perl kalba, kuri yra įtraukta į PHP paketą bibliotekoje. Preg-Ieškau funkcijas tam tikroje teksto eilutė atitikimo, pagal tam tikrą modelį reguliarių išraiškų kalba.

sintaksės pagrindai

Kaip dalis trumpą straipsnį neįmanoma išsamiai aprašyti visas Įprastoji išraiška sintaksė, tai yra specialus literatūros. Mes pateikiame tik pagrindinius elementus parodyti galimybes kūrėjas ir suprasti kodas pavyzdžių.

PHP reguliaraus išraiška yra oficialiai apibrėžta labai sunku, todėl supaprastinti aprašymą. Įprastoji išraiška, yra teksto eilutė. Jis susideda iš tam skirtoje separatoriaus šabloną ir modifikatoriaus, nurodantis, kaip ją apdoroti. Galimas įtraukimas į įvairias alternatyvas ir pakartojimų modelius.

Pavyzdžiui, išraiškos / \ d {3} - \ d {2} - \ d {2} / m daliklis yra "/", po kurio šabloną, ir simbolis «m» yra modifikatorius.

Visi reguliarios išraiškos galia užkoduotas naudojant meta simbolių. Pagrindinis kalba metacharacter yra Backslash - "\". Tai keičia šių simbolių į priešingą tipą (ty. E. paverstas į įprastą simbolių reikšmes ir atvirkščiai). Kitas svarbus metacharacter yra tiesi linija «|", nurodoma alternatyvų šabloną. Daugiau pavyzdžių meta simbolių:

^ Pradėti objektą ar eilutę
( pradėti subpattern
) pabaiga subpattern
{ Pradėti quantifier
} pabaiga quantifier
\ r dešimtųjų skaičius nuo 0 iki 9
\ D bet koks simbolis, kuris yra ne skaičius
\ s tuščias simbolis, erdvė, skirtukas,
\ W Simbolių žodynas

PHP perdirbimo reguliarios išraiškos, erdvė laikoma atskiru galiojantį charakterio, todėl XYZ ir ABC išraiška KUR yra skirtingi.

subpatterns

PHP reguliaraus subpatterns skliausteliuose, ir jie kartais vadinami "subexpressions". Atlieka šias funkcijas:

  1. Paskirstymo alternatyvos. Pavyzdžiui, šilumos modelis (kažkas | paukštis |) sutampa su žodžiais "šilumos", "Firebird" ir "karštas". Ir be skliaustelių tai bus tik tuščia eilutė, "paukštis" ir "karštas".

  2. "Įspūdingas" subpattern. Tai reiškia, kad jei modelis atitiko poeilutį, tada grįžta į visas rungtynes. Siekiant aiškumo, mes suteikiame pavyzdį. Atsižvelgiant į šią reguliarią išraišką: nugalėtojas gauna ((auksas | paauksuoti) (medaliu | Cup)) - ir už rungtynes eilutė "nugalėtojas gauna aukso medalį." Be pradinio frazės, paieškos rezultatai bus išduodami: "aukso medalį", "medalius", "auksas".

Operatoriai pasikartojimų (kvadrifikatory)

Sudarant įprastą išraišką dažnai yra būtina analizuoti skaičių ir simbolių pasikartojimo. Tai ne problema, jei ne pakartojimų daug. Bet ką daryti, kai mes nežinome tikslaus jų skaičių? Tokiu atveju būtina naudoti specialius metasimbolių.

Dėl pakartojimų naudojamų kvadrifikatory aprašymas - metasimbolių nurodyti skaičių. Kvadrifikatory yra dviejų tipų:

  • bendroji skliausteliuose;
  • sumažintas.

Bendras Quantifier liečia minimalus ir maksimalus skaičius leidžiamų pakartojimų elementas dviejų skaičių, sąvaržų, pavyzdžiui, x {2,5} forma. Jeigu didžiausias skaičius pasikartojimų nėra žinoma, antrasis argumentas nenurodytas: x {2}.

Sutrumpintas Kwantyfikatory yra simboliai dažniausiai pakartojimų, siekiant išvengti nereikalingo Perkrova sintaksė. Paprastai yra trys gabalai:

1. * - nulis arba daugiau pakartojimų, o tai reiškia, kad {0,}.

2. + - vienas arba daugiau pakartojimų, ty, {1} ...

3.? - nulis arba tik vienas pakartotinis - {0,1}.

pavyzdžiai įpraiška

Tiems, kurie mokosi reguliarios išraiškos, pavyzdžių - geriausias vadovėlis. Mes suteikiame keletas, kad parodyti savo galimybes su minimaliomis pastangomis. Visi kodas yra visiškai suderinama su versijos PHP 4.x ir aukščiau. Norint visiškai suprasti sintaksę ir naudojimas visų kalbos funkcijų Rekomenduojame knyga J .. Friedl "reguliarios išraiškos", kuri visiškai laikomas sintaksė, ir ten yra pavyzdžiai reguliarios išraiškos ne tik PHP, bet ir Python, Perl, MySQL, Java, Ruby ir C #.

Patvirtinimo E-pašto adresas

Uždavinys. Yra interneto puslapis, kuriame lankytojas prašoma adresų laišką. Įprastoji išraiška, turi patikrinti adresus teisingumą prieš siunčiant pranešimus. Patikrinkite negarantuoja, kad nurodyta paštas tikrųjų egzistuoja ir gauna pranešimus. Bet išretinti akivaizdžiai neteisingus adresus ji gali.

Sprendimas. Kaip ir su bet programavimo kalba, PHP reguliaraus išraiška el.pašto adresas patikra gali būti įgyvendinama įvairiais būdais, ir šiame straipsnyje pavyzdžiai nėra galutinis ir vienintelis pasirinkimas. Todėl kiekvienu atveju, mes pateikia reikalavimus, kurie turi būti atsižvelgta, kai programavimo ir konkretus įgyvendinimas visiškai priklauso nuo kūrėjo sąrašą.

Taigi pasakymas, kad bandymai galiojantį elektroninio pašto adresą, reikėtų patikrinti šias sąlygas:

  1. Į pradžios buvimas linija simbolio @, ir nėra spragų.
  2. Domeno dalis simbolio @ adresą, yra tik galiojančius simbolių domenų vardus. Tas pats taikoma vartotojo vardą.
  3. Tikrindami vardą būtina nustatyti specialius simbolius buvimas, pavyzdžiui, kabutes, arba vertikalios linijos. Tokie simboliai yra potencialiai pavojingas ir gali būti pateikta tokiais rūšių išpuolių, SQL injekcijos. Venkite adresus.
  4. vardai leidžia tik vieną tašką, kuris gali būti ne pirmas arba paskutinis simbolis į eilutę.
  5. Domeno vardas turi būti ne mažiau kaip du ir ne daugiau kaip šešios simbolių.

Pavyzdžiui, atsižvelgiant į visas šias sąlygas gali būti vertinamas šioje paveikslėlyje.

Patvirtinimas URL

Uždavinys. Patikrinkite, ar nurodyti teksto eilutė yra galiojantis URL adresą. Dar kartą, mes pažymime, kad reguliarios išraiškos URL tikrinamas gali būti įgyvendinta įvairiais būdais.

Sprendimas. Mūsų galutinis variantas yra toks:

/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /? $ /

Dabar analizuoti savo komponentus išsamiau naudojant piešinį.

pagal 1 punktą Prieš URL neturėtų turėti jokių ženklų
2 punktą Patikrinkite privalomo priešdėliu buvimą «http»
3 punktas Neturi būti jokių simboliai
4 punktą Jei «-ai», URL nurodo saugų ryšį «https»
pagal 5 punktą, Reikalinga dalį "//"
6 punktą, nėra simbolių
p. 7-9 Tikrinant pirmo lygio domeną ir taško buvimas
p.10-13 Tikrinant rašyti antrą lygį ir tašką domeną
p.14-17

Failo struktūra adresas - iš skaičių, raidžių, apatinius, brūkšnelių, taškų rinkinys, o pabaigoje velniop

Patikrinkite kredito kortelių numerius

Uždavinys. Jūs turite įdiegti įteisinimą įvestą kredito kortelės numerį iš labiausiai paplitusių mokėjimo sistemų. Variantas tik korteles "Visa" ir "MasterCard".

Sprendimas. Kuriant išraišką jums reikia atsižvelgti į galimą buvimą spragas įvesties kambaryje. Skaitmenų žemėlapyje skirstomi į grupes, kad būtų lengviau skaityti ir diktantas. Todėl natūralu, kad žmogus gali pabandyti įvesti skaičių šiuo būdu (ty. E. Naudojant tarpus).

Rašyti universalų posakį, kad būtų atsižvelgta į galimus tarpų ar brūkšneliai, yra sudėtingesnis nei tiesiog išmesti visus simbolius išskyrus skaitmenų. Todėl mes rekomenduojame naudoti pakaitos reiškinį / D, kuris pašalina visus simbolius išskyrus skaitmenų.

Dabar galite eiti tiesiai į patikrinimo skaičiaus. Visos įmonės, kredito kortelių emitentai naudoti unikalų numerį formatą. Pavyzdyje jis naudojamas, o klientas neturi reikia įvesti įmonės pavadinimą - jis nustatomas pagal numerį. "Visa" kortelės visada prasideda su numeriais 4 ir turi 13 arba 16 skaitmenų ilgio. "MasterCard" prasideda nuo 51-55 diapazone su ilgą skaičius 16 Kaip rezultatas, mes gauname tokią išraišką:

Prieš apdorojant tvarka gali būti toliau išbandė paskutiniai skaičių, kuris apskaičiuojamas nuo Luno Formulė.

Tikrinti telefono numeris

Uždavinys. apie įvestą telefono numerį teisingumą tikrinti.

Sprendimas. Skaitmenų fiksuoto ir judriojo telefono ryšio numerių skaičius žymiai skiriasi priklausomai nuo šalies, todėl visuotinai patikrinti naudojant reguliarios išraiškos, telefono numerį teisingai neįmanoma. Tačiau tarptautiniai numeriai turi griežtą formą ir puikiai tinka tikrinti raštą. Net labiau, kad vis daugiau ir daugiau nacionalinių telefono ryšio operatoriai bando patenkinti patį standartą. Kambarių struktūra yra tokia:

+ CCC.NNNNNNNNNNxEEEE, kur:

- C - yra šalies kodas, sudarytas iš 1-3 skaitmenų.

- N - iki 14 skaitmenų.

- E - pasirinktinai pratęsimas.

Plius yra būtinas elementas, o ženklas X yra pateikti tik tada, kai reikia išplėsti.

Kaip rezultatas, mes turime tokią išraišką:

^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (:?. X +)? $

Į intervalo numeriai

Uždavinys. Būtina, siekiant užtikrinti sutapties sveikasis skaičius tam tikrą grupę. Be to, būtina rasti reguliaraus išraiška tik skaitmenys nuo diapazono.

Sprendimas. Štai keletas išraiškos kai kurie iš labiausiai paplitusių atvejais:

Nustatyti valandą nuo 1 iki 24 ^ (1 [0-2] | [1-9]) $
Diena per mėnesį 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekundžių ar minučių 0-59 ^ [1-5]? [0-9] $
Skaičius 1-100 * (100 |? [1-9] [0-9]) $
Diena 1-366 metus ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Paieška IP adresai

Uždavinys. Būtina nustatyti, ar tam tikra seka yra galiojantis IP-adresas IPv4 formatu intervale nuo 000.000.000.000-255.255.255.255.

Sprendimas. Kaip ir su bet kuriuo PHP kalba problemą, Įprastoji išraiška turi daug varintov. Pavyzdžiui, tai:

Prisijungę tikrinimas išraiškos

Patikrinkite įpraišką teisingai pradedantiesiems gali būti sunku dėl to, kad sintaksė sudėtingumo, kuris skiriasi nuo "įprastų" programavimo kalbomis. Norėdami išspręsti šią problemą, yra daug lankosi testeriai išsireiškimai, kurie daro tai lengva patikrinti šablono sukurtą realaus teksto teisingumą. Programuotojas įveda išraiška ir tikrinimo duomenys ir iš karto pamatyti tvarkymo rezultatas. Paprastai yra pateikti orientacinį skyrių, kuriame išsamiai apie reguliarios išraiškos, pavyzdžių ir įgyvendinimo skirtumus labiausiai ilgą kalbomis.

Bet visiškai pasitikite internetinėmis paslaugomis rezultatai nerekomenduojama visiems kūrėjams, kurie naudoja PHP. Įprastoji išraiška yra parašyta ir patikrinta asmeniškai, kelia kvalifikaciją ir garantuoti klaidų nebuvimą.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 lt.unansea.com. Theme powered by WordPress.