Úvod do regulárnych výrazov v PHP
Autor: Bernard Peh
V systéme Linux a UNIX, Syntax, ktorá sa bežne používa mnohými aplikáciami na špecifikovanie textových vzorov, je známa ako regulárne výrazy alebo v krátkej forme – regex. Regex je veľmi výkonná technika na opis vzorov a mnoho programov ich používa na opis sekvencie znakov, ktoré sa majú zladiť. Vyhľadajte programy ako ‘Grep’ sa ťažko spoliehajte na regex. V podstate regex tvorí jadro vo svete Linuxu. Mnoho skriptovacích jazykov, ako je Perl, rubínový, php…ETC má tiež zostavenie funkcií regex. Takže vidíte, Učenie sa regulárneho prejavu je dôležité, pretože sa na mnohých miestach používajú veľa a pravdepodobne viac v budúcnosti.
Regex môže byť spočiatku strašidelný, ale ak môžete získať základy, Naozaj to nie je príliš ťažké pochopiť. V tomto článku, Pri písaní aplikácií PHP sa pozrieme na to, ako Regex prichádza na obrázok pri písaní aplikácií PHP.
Zatiaľ urobiť rýchle zhrnutie, Regulárny výraz je sekvencia doslovných znakov, zástupné znaky, modifikátory a kotvy.
Doslovné postavy
Doslovné znaky sú písmená, číslice a špeciálne postavy, ktoré sa zhodujú iba sami. Príklady sú ABC, 123, ~@ a tak ďalej (Niektoré znaky sú však vyhradené).
– Rozsah zaradenia [m-n] zhoduje sa s jedným z akýchkoľvek znakov zahrnutých v rozsahu od m do n.
Príklad[a-z]’ bude zodpovedať akémukoľvek znaku alfa, ktorý spadá do rozsahu A až Z.
– Rozsah vylúčenia [^m-n] Zhoduje sa s jedným z akýchkoľvek znakov, ktoré nie sú zahrnuté v rozsahu od m do n. Príklad[^0-9]’ bude zodpovedať akémukoľvek necifernému charakteru.
– Obdobie “.” Zhoduje sa s akoukoľvek postavou. Je tiež známy ako zástupný znak. Príklad ‘a.c’ sa zhoduje s „AEC“, „ACC“, ‘A@a’ a tak ďalej.
– Úniková postava ” Povoliť interpretáciu špeciálnych znakov. Príklad ‘a.c’ Bude sa zhodovať s ‘AC’ iba. Pamätajte, že ‘.’ je vyhradený charakter, ktorý predstavuje zástupný znak? Preto sa zhoduje s obdobím, tj '.', Musíme to uniknúť tak, že ‘.’
– Výraz [:stopa:] zhoduje sa so všetkými alfa-numérnymi znakmi. Je to skratka [A-ZA-Z0-9]. Ako vidíte, V skutočnosti to nie je skratka. Výraz [:stopa:] Pre niektorých ľudí by sa mohlo ľahšie zapamätať.
– Výraz [:alfa:] zhoduje sa so všetkými znakmi alfa. Je to skratka [A-za-z].
– Výraz [:prázdny:] Zodpovedá priestoru alebo karte.
– Výraz [:nahromadenie:] sa zhoduje s číselnou číslicou. Je to skratka [0-9].
– Výraz [:znížiť:] zhoduje sa so všetkými malými písmenami. Je to skratka [a-z].
– Výraz [:horný:] Zodpovedá všetkým veľkým písmenom. Je to skratka [A-Z].
– Výraz [:bod:] zhoduje sa so všetkými znakmi, ktoré je možné vytlačiť, s výnimkou priestorov a alfanumérií.
– Výraz [:priestor:] zhoduje sa s medzerou.
Modifikátory
Modifikátor mení význam bezprostredne predchádzajúceho znaku vzoru.
– Hviezdička („*“) zápas 0 alebo viac predchádzajúceho termínu. Príklad ‘A*’ bude zápasiť ”, „A“, „AA“, ‘Aaaaa’ a tak ďalej (Všimnite si použitie ”. Znamená to jednoducho, že výraz sa nezhoduje aj s).
– Otáznik (A to?„) zápas 0 a 1 predchádzajúceho termínu. Príklad ‘a?’ bude zápasiť ” a ‘a’ iba.
– Plus znamenie („+“) zápas 1 alebo viac predchádzajúceho termínu. Príklad ‘A+’ sa zhoduje s „A“, 'Aaaaaaaa’ a tak ďalej. Nebude sa zhodovať ”.
– {m,n} Zhody medzi M a n výskytmi predchádzajúceho termínu. Príklad ‘a{1,3}’ sa zhoduje s „A“, ‘Aa’ a ‘aaa’ iba.
– {n} Zhoduje sa presne n výskyt predchádzajúceho termínu. Príklad ‘a{2}’ bude zladiť ‘AA’ iba.
Kotvnice
Kotvy stanovujú kontext pre vzorec, ako je napríklad “začiatok slova” a “koniec slova”.
– Pike ‘^’ označuje začiatok riadku. Príklad ‘^http’ zhoduje sa s akýmkoľvek novým riadkom, ktorý začína „http“.
– Značka dolára $ $’ označuje koniec riadku. Príklad ‘Po $’ zhoduje sa s akýmkoľvek riadkom, ktorý končí „po“. (Premenné v PHP začína $. Snažte sa s tým nezamieňať).
Zoskupenie
Zoskupenie ‘( )’ Umožňuje modifikátorom vzťahovať sa na skupiny špecifikátorov regexu namiesto iba okamžitého postupu. Príklad( aa | bb )’ bude zladiť buď ‘aa’ alebo ‘BB’
Dosť nudných vecí, Je čas uviesť, čo teória regexu dobre využije.
Implementácia PHP
Existujú 2 Hlavné varianty regexu, Perl kompatibilný regex (Pcre) a posix-rozšírené. PHP ponúka na ich implementáciu veľa funkcií 2 typy regexu. V PHP, Najčastejšie používanou funkciou PCRE je ‘preg_match’ a v posix-rozšírenom regexe, 'Ereg'. Obe syntax sú mierne odlišné, ale rovnako výkonné. Preferencia používať ‘preg_match’ „To’ je výlučne na jednotlivcovi, hoci Zend navrhol, že preg_match je o niečo rýchlejší. Radšej používam ‘eregi’ Jednoducho kvôli môjmu pozadiu v správe Linux.
Príklad 1: Zodpovedajúce Spojené štáty americké 5 a 9 číslice PSČ
PSČ v USA majú nasledujúci formát ##### a #####-#### kdekoľvek # je číslica. Ak chcete overiť odoslané PSČ, povedzme z online formulára, Na overenie ho budete musieť použiť regex niekde vo svojom skripte. Zodpovedajúci posix-rozšírený regex vzor bude:
[[:nahromadenie:]]{5}(-[[:nahromadenie:]]{4})?
Zmätený? Čakať, Dovoľte mi vysvetliť prečo. Tento regex je rozdelený do 2 diely: [[:nahromadenie:]]{5} a (-[[:nahromadenie:]]{4})?.
Prvá časť: A to[[:nahromadenie:]]’ znamená rozsah číslice a {5} znamená, že sa musí vyskytnúť číslica 5 časy.
Druhá časť: Držiak ‘( )’ skupiny ‘-[[:nahromadenie:]]{4}’ spolu a ‘?’ znamená výraz ‘(-[[:nahromadenie:]]{4})’ môže sa vyskytnúť buď 0 a 1 čas.
Implementovať regex v PHP, Používame nasledujúci kód:
$zipCodes = ‘xxxxx-xxxx ';
$vzor = ‘[[:nahromadenie:]]{5}(-[[:nahromadenie:]]{4})?„;
či (hrebeň($vzor,$zloky)) {
ozvena “nález “;
}
inak {
ozvena “zápas sa nenašiel”;
}
Príklad 2: Dátumy zhody
Povedzme, že chceme overiť dátumy zadané používateľom. Ak akceptujeme iba dátumy ako “Drrrror-mm-dd” a “Rrrrrrror”, Vzor regex bude
[0-9]{4}(-[0-9]{1,2})+
‘+’ za termínom (-[0-9]{1,2}) znamená, že tento výraz sa musí vyskytnúť najmenej raz. Všimnite si, že môžem tiež prepísať regex ako:
[[:nahromadenie:]]{4}(-[[:nahromadenie:]]{1,2})+
a
[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}
Ako vidíte, môže byť veľa riešení problému…
Záver
Regex môže byť najprv ťažké stráviť, ale logika je jednoduchá, ak ste schopní precvičiť viac. Učenie sa regex je rovnako dôležité ako učenie PHP. Viac príkladov je možné vidieť na web-developer.sitecritic.net. Veľa šťastia.
Bernard Peh je veľkým vášnikom webových technológií a jedným zo spoluzakladateľov Recenzie stránok sitecritic.net. Pracuje so skúsenými webovými dizajnérmi a vývojármi viac ako 5 roky, Vývoj a navrhovanie komerčných a nekomerčných webových stránok. Počas jeho voľného času, Robí recenzie webových stránok, Práca na voľnej nohe SEO a PHP. Navštívte jeho blog na Melbourne PHP
Článok Zdroj: http://EzineArticles.com/?expert = bernard_peh
http://EzineArticles.com/?Úvod do regulácie&ID = 222113