PočítačeProgramovanie

PHP (regulárny výraz) - čo je to? Príklady a kontrola regulárnych výrazov

Pri práci s textami v ľubovoľnom modernom programovacom jazyku sa vývojári neustále stretávajú s úlohami kontroly zadaných údajov na zodpovedanie požadovanej šablóny, vyhľadávanie a nahrádzanie testovacích fragmentov a iných typických operácií na spracovanie informácií o symboloch. Vývoj vlastných overovacích algoritmov vedie k strate času, nezlučiteľnosti programového kódu a zložitosti pri jeho vývoji a modernizácii.

Rýchly vývoj internetu a jazykov vývoja webových stránok si vyžadoval vytvorenie univerzálnych a kompaktných zariadení na spracovanie textu s minimálnym počtom potrebných kódov. PHP jazyk nie je výnimkou a je populárny medzi začiatočníkmi a profesionálnymi vývojármi. Pravidelný výraz ako jazyk textových šablón umožňuje zjednodušiť úlohu spracovania textu a znížiť programový kód o desiatky a stovky riadkov. Mnoho úloh sa nedá vyriešiť bez nej.

Pravidelné výrazy v PHP

PHP jazyk obsahuje tri mechanizmy pre prácu s regulárnymi výrazmi - "ereg", "mb_ereg" a "preg". Najčastejšie je rozhranie "preg", ktorého funkcie umožňujú prístup k knižnici podpory regulárneho výrazu PCRE, pôvodne vyvinutému pre jazyky Perl, ktorá je súčasťou balíka PHP. Predbežné funkcie vyhľadávajú v zadanom textovom reťazci zhody podľa určitého vzoru v jazyku regulárnych výrazov.

Základy syntaxe

V rámci krátkeho článku nie je možné podrobne popísať celú syntax regulárnych výrazov, na tento účel existuje špeciálna literatúra. Tu sú len základné prvky pre zobrazenie širokej škály možností pre vývojárov a pochopenie príkladov kódov.

V PHP je formálne definovaný regulárny výraz veľmi ťažký, a preto popis zjednodušujeme. Regulárny výraz je textový reťazec. Pozostáva z vymedzenej šablóny a modifikátora, čo naznačuje, ako ju zvládnuť. Je možné zahrnúť rôzne alternatívy a opakovania v šablónach.

Napríklad vo výraze / \ d {3} - \ d {2} - \ d {2} / m, oddeľovač je "/" , potom ide o vzor a znak "m" je modifikátor.

Celá sila regulárnych výrazov je zakódovaná metacharaktormi. Hlavným metacharakterom jazyka je spätné lomítko - "\". Zmení typ znaku, ktorý nasleduje, na opačný znak (to znamená, že obyčajná postava sa zmení na metacharakter a naopak). Ďalším dôležitým znakom metacharakteru je priamka "|", ktorá špecifikuje alternatívne varianty šablóny. Ďalšie príklady metacharaktrov:

^ Začiatok objektu alebo reťazca
( Začiatok podriadenia
) Koniec podsadca
{ Pôvod kvantifikátora
} Koniec kvantifikátora
\ D Desatinná číslica od 0 do 9
\ D Každý znak, ktorý nie je číslicou
\ S Prázdna postava, priestor, karta
\ W Slovník slovníka

PHP, spracovanie regulárnych výrazov, považuje priestor za samostatný významný symbol, takže výrazy ABCDEF a ABC WHERE sú odlišné.

čiastkových vzorcov

V systéme PHP sú pravidelné podpoložky priradené v zátvorkách a niekedy sa nazývajú "subexpresia". Vykonajte nasledujúce funkcie:

  1. Prideľovanie alternatív . Napríklad vzor tepla (niečo | vták |) sa zhoduje so slovami "teplo", "oheň" a "pečienka" . A bez zátvoriek to bude iba prázdny reťazec, "vták" a "pečené".

  2. "Vzrušujúce" subpattern. To znamená, že ak sa podreťazec zhoduje s šablónou, všetky výsledky sa vrátia ako výsledok. Z dôvodu prehľadnosti uvádzame príklad. Nasleduje nasledujúci regulárny výraz: víťaz získa ((zlato) pozlátenú medailu) a reťazec na prispôsobenie: "víťaz získa zlatú medailu" . Okrem pôvodnej frázy sa v dôsledku vyhľadávania vydá: "zlatá medaila" , "medaila", "zlato" .

Opakovaní operátori (kvadrifiery)

Pri vytváraní regulárnych výrazov je veľmi často potrebné analyzovať opakovanie čísel a symbolov. To nie je problém, ak nie je veľa opakovaní. Ale čo keď nevieme ich presné číslo? V tomto prípade musíte použiť špeciálne metaznaky.

Pre opis opakovaní sa používajú quadriky - metaznačky na zadanie čísla. Quadrices sú dva typy:

  • Všeobecne, uzavreté v zátvorkách;
  • znížená.

Celkový kvantifikátor je ovplyvnený minimálnym a maximálnym počtom povolených opakovaní prvku v tvare dvoch čísel v zákrutách, napríklad: x {2,5}. Ak nie je známy maximálny počet opakovaní, druhý argument nie je zadaný: x {2,}.

Zmenšené kvantifikátory predstavujú symboly pre najbežnejšie opakovania, aby sa predišlo zbytočnému preťaženiu syntaxe. Tri zvyčajne sa používajú skratky:

1. * - nula a viac opakovaní, čo je rovno {0,}.

2. + jedno alebo viac opakovaní, t.j. {1,}.

3.? - nulu alebo iba jedno opakovanie - {0,1}.

Príklady regulárnych výrazov

Pre tých, ktorí študujú pravidelné výrazy, sú príklady najlepšou učebnicou. Dávame niekoľko, ktoré s minimálnym úsilím ukazujú svoje bohaté príležitosti. Všetky programové kódy sú plne kompatibilné s verziami PHP 4.x a vyššou. Ak chcete plne pochopiť syntax a používať všetky jazykové funkcie, odporúčame knihu J. Regirových výrazov "Regular Expressions", kde je syntax plne chápaný a existujú príklady regulárnych výrazov nielen v PHP, ale aj v jazykoch Python, Perl, MySQL, Java, Ruby a C #.

Kontrola správnosti e-mailovej adresy

Úloha. K dispozícii je internetová stránka, na ktorej je od návštevníka vyžiadaná e-mailová adresa. Pravidelný výraz musí skontrolovať správnosť prijatej adresy pred odoslaním správ. Kontrola nezaručuje, že zadaná schránka skutočne existuje a akceptuje písmená. Je však možné odstrániť zámerne nesprávne adresy.

Riešenie. Rovnako ako v každom programovacom jazyku môžu byť pravidelné výrazy overenia e-mailovej adresy v PHP implementované v PHP rôznymi spôsobmi a príklady v tomto článku nie sú konečnou a jedinou možnosťou. Preto v každom prípade uvádzame zoznam požiadaviek, ktoré je potrebné zohľadniť v programovaní, a konkrétna implementácia závisí výlučne od vývojára.

Takže výraz kontroly platnosti e-mailu by mal skontrolovať nasledujúce podmienky:

  1. Prítomnosť symbolu @ v zdrojovom reťazci a absencia medzery.
  2. Doména časti adresy mimo symbol @ obsahuje iba platné znaky pre názvy domén. To isté platí pre meno používateľa.
  3. Pri overovaní mena používateľa musíte zistiť, či sú prítomné špeciálne znaky, napríklad apostrof alebo vertikálna lišta. Takéto symboly sú potenciálne nebezpečné a môžu byť obsiahnuté v útokoch, ako sú SQL injekcie. Vyhnite sa týmto adresám.
  4. Užívateľské mená umožňujú iba jeden bod, ktorý nemôže byť prvý alebo posledný znak v reťazci.
  5. Názov domény musí obsahovať aspoň dva a nie viac ako šesť znakov.

Príkladom, ktorý zohľadňuje všetky tieto podmienky, je možné vidieť na obrázku nižšie.

Overenie webových adries

Úloha. Skontrolujte, či je zadaný textový reťazec platnou adresou URL. Znova môžu byť bežné výrazy URL implementované rôznymi spôsobmi.

Riešenie. Naša konečná verzia je nasledovná:

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

Teraz podrobnejšie analyzujeme jeho komponenty pomocou tohto obrázku.

Položka 1 Pred URL nemôžu byť žiadne znaky
Bod 2 Kontrolujeme povinnú predponu "http"
Bod 3 Nesmú byť žiadne znaky
Bod 4 Ak existuje "s", potom URL odkazuje na zabezpečené pripojenie "https"
Bod 5 Požadované "//"
Bod 6 Žiadne znaky
Položka 7-9 Overenie správnosti domény prvej úrovne a dostupnosti bodu
p.10-13 Kontrola správnosti písania domény a bodu druhej úrovne
Bod 14-17

Štruktúra súboru adresy URL je súbor čísiel, písmen, podčiarkov, pomlčiek, bodiek a lomítok na konci

Kontrola čísel kreditných kariet

Úloha. Je potrebné overiť správnosť zadaného čísla plastovej karty najbežnejších platobných systémov. Možnosť je určená len pre Visa a MasterCard.

Riešenie. Pri vytváraní výrazu je potrebné vziať do úvahy možnú prítomnosť priestorov v zadanom čísle. Čísla na mape sú rozdelené do skupín pre jednoduché čítanie a diktovanie. Je preto úplne prirodzené, že sa človek môže pokúsiť o zadanie čísla týmto spôsobom (tj použitím priestorov).

Je ťažšie napísať univerzálny výraz, ktorý berie do úvahy možné medzery a pomlčky, ako jednoducho odstrániť všetky symboly okrem číslic. Preto sa vo výraze odporúča používať metadatakard / D, ktorý vymaže všetky znaky okrem číslic.

Teraz môžete prejsť priamo na overenie čísla. Všetky spoločnosti kreditných kariet používajú jedinečný formát čísel. V tomto príklade sa používa a klient nemusí zadávať názov spoločnosti - je určený číslom. Visa karty vždy začínajú 4 a majú dĺžku 13 alebo 16 číslic. MasterCard začína v rozmedzí 51-55 s dĺžkou čísla 16. Výsledkom je nasledujúci výraz:

Pred spracovaním objednávky môžete vykonať dodatočnú kontrolu poslednej číslice čísla, ktorá je vypočítaná algoritmom Mesiaca.

Kontrola telefónnych čísel

Úloha. Kontrola správnosti zadaného telefónneho čísla.

Riešenie. Počet čísel v pevných a mobilných telefónnych číslach sa v závislosti od krajiny značne líši, takže je všeobecne možné kontrolovať pomocou regulárnych výrazov, telefónne číslo nemôže byť správne. Ale medzinárodné čísla majú striktný formát a skvelé na kontrolu šablóny. Okrem toho sa stále viac a viac vnútroštátnych telefónnych operátorov snaží splniť jeden štandard. Štruktúra čísel je nasledujúca:

+ CCC.NNNNNNNNNNxEEEE, kde:

- C je kód krajiny pozostávajúci z 1 - 3 číslic.

- N - číslo až 14 číslic.

- E je voliteľné rozšírenie.

Plus je povinný prvok a znak x je prítomný iba v prípade, že je potrebná expanzia.

V dôsledku toho máme nasledujúci výraz:

[0-9] {1, 3} \ [0-9] {4,14} (a: x +)

Čísla v rozsahu

Úloha. Je potrebné zabezpečiť, aby celé číslo zodpovedalo určitému rozsahu. Navyše je potrebné, aby sa regulárne výrazy nachádzali len v rozsahu hodnôt.

Riešenie. Uvádzame niekoľko výrazov pre niekoľko najbežnejších prípadov:

Určte hodinu od 1 do 24 ^ (1 [0-2] | [1-9]) $
Deň v mesiaci 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Druhá alebo minúta 0-59 ^ [1-5]? [0-9] $
Číslo od 1 do 100 ^ (100 | [1-9] a [0-9])
Deň roka 1-366 ^ [36] 0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} | [1-9] [0-9]

Vyhľadajte adresu IP

Úloha. Musíte zistiť, či zadaný reťazec je platná adresa IP vo formáte IPv4 v rozsahu od 000.000.000.000-255.255.255.255.

Riešenie. Rovnako ako pri každej úlohe PHP má regulárny výraz niekoľko možností. Napríklad toto:

Online testovanie výrazov

Kontrola regulárnych výrazov pre správnosť pre začínajúcich programátorov môže byť zložitá kvôli zložitosti syntaxe, ktorá sa líši od "normálnych" programovacích jazykov. Ak chcete vyriešiť tento problém, existuje veľa online testerov výrazov, ktoré vám umožňujú ľahko overiť správnosť vytvorenej šablóny na skutočnom texte. Programátor zadá výraz a údaje na overenie a okamžite vidí výsledok spracovania. Zvyčajne existuje aj referenčná sekcia, kde sú podrobne popísané regulárne výrazy, príklady a implementačné rozdiely pre najbežnejšie programovacie jazyky.

Plne dôverovať výsledkom služieb online sa však neodporúča pre všetkých vývojárov, ktorí používajú PHP. Pravidelný výraz, osobne napísaný a overený, zvyšuje kvalifikáciu a zaručuje neprítomnosť chýb.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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