PočítačeProgramování

PHP (regex) - co to je? Příklady a kontrolní regulární výrazy

Při práci s textem v jakémkoliv moderním programovacím jazyku, vývojáři neustále setkávat s cíli ověření vstupu pro splnění požadovaného vzoru, vyhledávání a nahrazování testů fragmentů a jiné druhy zpracování operací informativní charakter. Rozvíjet své vlastní validační algoritmy vede ke ztrátě času, kompatibilitu kódu a složitosti její rozvoj a modernizaci.

Rychlý rozvoj internetu a web-design jazyků vyžaduje vytvoření univerzální a kompaktní prostřednictvím zpracování textu s minimálním množství potřebném pro tento kód. Není výjimkou, a je populární mezi začátečníky i profesionální vývojáře v jazyce PHP. Jazyk regulárních výrazů jako textové šablony zjednodušují manipulaci text a snížit kód pro desítky a stovky linek. Mnoho problémů nelze řešit vůbec bez něj.

Regulární výrazy v PHP

PHP jazyk má tři mechanismy pro práci s regulárními výrazy - «ereg», «mb_ereg» a «Samo». Nejběžnější je rozhraní «Samo», jehož funkce poskytují přístup do knihovny PCRE regulární výraz podpory, který byl původně vyvinut pro jazyce Perl, který je obsažen v balíčku PHP. Samo-hledat funkce v daném textového řetězce vyhovující, podle určitého vzoru v jazyce regulárních výrazů.

Základy syntaxe

Jako součást krátkém článku není možné podrobně popsat celý regulární výraz syntax, neboť to je odborná literatura. Představujeme jen hlavní prvky, které ukazují příležitosti pro vývojáře a pochopit příklady kódu.

V PHP regulární výraz formálně definován velmi obtížné, a proto zjednodušení popisu. Pravidelný výraz je textový řetězec. Skládá se z vyhrazeného separátoru šablony a modifikátor označující způsob, jak to zvládnout. Možné začlenění do různých alternativ a opakování vzorů.

Například ve výrazu / \ d {3} - \ d {2} - \ d {2} / m dělič je "/", následuje šablony, a symbol «m» je modifikátor.

Všechnu moc regulárních výrazů je kódována pomocí meta-znaky. Hlavním jazykem Metaznak je zpětné lomítko - „\“. To se mění typ následujících znaků na opačné (tj. E. převedené do běžného charakteru zástupného a naopak). Dalším důležitým Metaznak je přímka «|», určuje alternativní šablonu. Další příklady meta-znaky:

^ Spustit objekt nebo řetězec
( spustit dílčí vzorec
) konec dílčí vzorec
{ Start quantifier
} konec quantifier
\ d desítková číslice od 0 do 9
\ D libovolný znak, který není číslo
\ s prázdný znak, místo, Karta,
\ w symbol slovníku

PHP, zpracování regulárních výrazů, prostor považován za samostatný platný znak, takže exprese XYZ a ABC, kde jsou různé.

dílčích vzorců

V PHP pravidelných dílčích vzorců závorkami, a oni jsou někdy označovány jako „subexpressions“. Provádět následující funkce:

  1. Alokační alternativy. Například tepelná pattern (něco | Bird |) se shoduje se slovy „teplo“, „Firebird“ a „horké“. A bez závorek, že to bude jen prázdný řetězec, „pták“ a „horké“.

  2. "Spectacular" dílčí vzorec. To znamená, že v případě, že vzor uzavřeno retezec, pak vrátí všechny zápasy. Pro názornost uvádíme příklad. S ohledem na následující regulární výraz: vítěz získá ((zlato | pozlacený) (medaile | cup)) - a řetězec pro tento zápas, „vítěz získá zlatou medaili.“ Kromě původního výrazu, bude vydána výsledky vyhledávání: „zlatou medaili“, „medaile“, „zlato“.

Operátory opakování (kvadrifikatory)

Při sestavování regulární výraz je často nutné analyzovat opakování čísel a symbolů. To není problém, pokud není mnoho opakování. Ale co dělat, když nevíme jejich přesný počet? V tomto případě je nutné použít speciální metaznaků.

Pro popis opakování používaných kvadrifikatory - metaznaků zadat číslo. Kvadrifikatory jsou dvojího druhu:

  • běžné v závorkách;
  • snížena.

Celková quantifier dotkl minimální a maximální povolený počet opakování prvku ve formě dvou čísel v podpěr, jako například x {2,5}. Pokud je maximální počet opakování, není známo, že druhý argument není uvedeno: x {2}.

Zkrácené quantifiers jsou symboly pro nejčastější opakování, aby se předešlo zbytečnému přetěžování syntaxi. Obvykle existují tři kusy:

1. * - nula nebo více opakování, což je ekvivalentní {0}.

2. + - jeden nebo více opakování, tj, {1} ...

3.? - nula, nebo pouze jednoho opakování - {0,1}.

Příklady regex

Pro ty, kteří se učí regulární výrazy, příklady - nejlepší učebnici. Dáváme málo, že ukázat své možnosti s minimálním úsilím. Veškerý kód je plně kompatibilní s verzemi PHP 4.x a vyšší. Chcete-li plně pochopit syntaxi a využití všech jazykových prvků doporučujeme knihu J .. Friedl, „regulárních výrazů“, který plně považován syntax, a existují příklady regulárních výrazů nejen PHP, ale i pro Python, Perl, MySQL, Java, Ruby, a C #.

Ověření E-mailová adresa

Úkol. K dispozici je internetová stránka, na které se návštěvník požadovanou adresu e-mail. Regulární výraz musí zkontrolovat správnost adresy před odesláním zprávy. Kontrola nezaručuje, že specifikovaná schránka skutečně existuje a přijímá zprávy. Ale vyřadit zjevně nesprávné adresy může.

Rozhodnutí. Stejně jako u jakéhokoliv programovacího jazyka, v PHP regex ověřovací email-adresa může být realizován různými způsoby a příklady v tomto článku nejsou konečné a jedinou možnou volbou. Proto se v každém případě budeme poskytnout seznam požadavků, které je třeba vzít v úvahu při plánování a konkrétní implementace zcela závisí na developera.

To znamená, že výraz, který testuje platný e-mail, měli zkontrolovat následující podmínky:

  1. Přítomnost na startovní čáře symbol @, a nejsou tam žádné mezery.
  2. Doménová část adresy znakem @, obsahuje pouze platné znaky pro názvy domén. Totéž platí pro uživatelské jméno.
  3. Při kontrole uživatelské jméno, je nutné určit přítomnost zvláštních znaků, jako apostrof nebo svislé čáry. Tyto symboly jsou potenciálně nebezpečné a mohou být obsaženy v těchto druzích útoků, které SQL injekci. Vyhnout adresy.
  4. uživatelská jména umožňují pouze jeden bod, což nemusí být první nebo poslední znak v řetězci.
  5. Doménové jméno musí obsahovat alespoň dva a ne více než šest znaků.

Například s ohledem na všechny tyto podmínky lze vidět na následujícím obrázku.

Ověření adresy URL

Úkol. Zkontrolujte, zda je zadaný textový řetězec je platné adresy URL. Opět musíme poznamenat, že regulární výrazy URL-kontrola může být provedena různými způsoby.

Rozhodnutí. Naše konečná verze je následující:

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

Nyní analyzovat jeho součásti podrobněji pomocí výkresu.

nárok 1 Před tím, než URL by neměla mít žádné znaky
nárok 2 Zkontrolovat přítomnost povinného předpony «http»
položka 3 Musí existovat žádné symboly
nárok 4 V případě, že «s», adresa URL směřuje na zabezpečené připojení «https»
nárok 5 Vyžadována část „//“
nárok 6 žádné znaky
str. 7-9 Ověření první doménu úrovně a přítomnost bodu
p.10-13 Ověření domény psaní druhé úrovně a bod
p.14-17

Struktura souboru URL - sada čísel, písmen, podtržítka, pomlčky, tečky a lomítko na konci

Podívejte se na čísla kreditních karet

Úkol. Je potřeba provést ověření zadaného čísla kreditní karty z nejběžnějších platebních systémů. Varianta pouze pro karty Visa a MasterCard.

Rozhodnutí. Při vytváření výraz je třeba vzít v úvahu možnou přítomnost mezer ve vstupním prostoru. Číslice v mapě jsou rozděleny do skupin pro snadnější čtení a diktát. Proto je přirozené, že člověk může pokusit zadat číslo tímto způsobem (např. E. Použití mezer).

Napsat univerzální výraz, který bere v úvahu případné mezery a pomlčky, je složitější, než jen odhodit všechny znaky kromě číslic. Z tohoto důvodu doporučujeme používat zástupný výraz / D, který odstraní všechny znaky kromě číslic.

Nyní můžete přejít přímo na kontrolním číslem. Všechny společnosti, Vydavatelé platebních karet použít jedinečný číselný formát. V tomto příkladu se používá, a klient nemusí zadávat název společnosti - je určena počtem. Visa karty vždy začínat s čísly 4 a mají délku 13 nebo 16 číslic. MasterCard začíná v rozmezí 51-55 s dlouhým číslem 16. Jako výsledek, dostaneme následující vyjádření:

Před zpracováním objednávky mohou být dále testovány poslední číslice čísla, která se vypočítává na algoritmu Luhn.

Ověření telefonního čísla

Úkol. Kontrole správnosti zadaného telefonního čísla.

Rozhodnutí. Počet číslic v pevných a mobilních telefonních čísel se značně liší v závislosti na zemi, tak univerzálně zkontrolovat pomocí regulárních výrazů, telefonní číslo správně nemožné. Ale mezinárodní čísla mají přísný formát a dokonalou kontrolu vzor. Tím spíš, že stále více a více národní telefonní operátoři se snaží splnit stejné normy. Struktura pokoj je následující:

+ CCC.NNNNNNNNNNxEEEE, kde:

- C - je kód země se skládá z 1-3 číslic.

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

- E - volitelné rozšíření.

Plus je nezbytným prvkem, a znak X je přítomna pouze v případě potřeby rozšíření.

V důsledku toho máme následující výraz:

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

Čísla v rozmezí

Úkol. Je nezbytné zajistit, koincidenční celé číslo v určitém rozsahu. Kromě toho, že je nutné najít regulární výraz pouze čísla z řady.

Rozhodnutí. Zde je několik výrazů na některé z nejčastějších případech:

Určete hodinu od 1 do 24 ^ (1 [0-2] | [1-9]) $
Den v měsíci 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekund nebo minut 0-59 ^ [1-5]? [0-9] $
Číslo 1-100 * (100 |? [1-9] [0-9]) $
Den v roce 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Vyhledávání IP adresy

Úkol. Je třeba určit, zda daný řetězec je platný IP adresy ve formátu IPv4 v rozmezí od 000.000.000.000-255.255.255.255.

Rozhodnutí. Stejně jako v případě jakéhokoliv problému v jazyce PHP regulární výraz má mnoho varintov. Například tento:

Online kontrola výrazů

Zkontrolujte, zda regulární výraz správně pro začátečníky může být obtížné z důvodu složitosti syntaxe, který se liší od „běžných“ programovacích jazyků. Pro vyřešení tohoto problému, existuje mnoho online testery výrazy, které usnadňují kontrolu správnosti šablony vytvořené ve skutečném textu. Programátor zadá výraz a ověřovací data a okamžitě vidět výsledek zpracování. Obvykle je prezentovat referenční bod, který podrobně popisuje regulární výrazy, příklady a rozdíly implementace pro většinu rozšířených jazyků.

Ale plně důvěryhodných službách on-line výsledky nedoporučuje pro všechny vývojáře, kteří používají PHP. Pravidelný výraz zapsán a ověřených osobně, zvyšuje kvalifikaci a garantovat úplnou absenci chyb.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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