PHP - Část XIII. (Regulární výrazy podruhé) - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



PHP

PHP - Část XIII. (Regulární výrazy podruhé)

19. září 2000, 00.00 | pokračování povídání o regulárních výrazech a jejich použití v PHP.

Regulární výrazy podruhé

V tomto článku budeme pokračovat v regulárních výrazech - seznámíme se s dalšími metaznaky a funkcemi pro práci s nimi. Minule jsme skončili u metaznaků '{' a '}', které slouží k vymezení počtu opakování znaků. Své opodstatnění mají v regulárních výrazech i hranaté závorky - '[' a ']'. Mezi ně vložíme množinu znaků, ze které může být použit jen jeden z nich. Množina může obsahovat libovolný počet znaků.

Př.: regulárnímu výrazu [xy]z vyhoví pouze řetězce, které obsahují xz nebo yz.

Jestliže chceme v hranatých závorkách vymezit pouze možnost použití jednoho znaku z celé anglické abecedy, existuje možnost kratšího zápisu ve tvaru [a-zA-Z]. Tento zápis je stejný, jako kdybychom mezi hranaté závorky vypsali všechny znaky anglické abecedy. Stejné možnosti zápisu můžeme použít i pro čísla od 0 do 9 - [0-9].
Hranaté závorky mohou mít i opačnou funkci - mohou vymezit množinu znaků, které v textovém řetězci nemohou být použity. V takovém případě se do hranatých závorek před množinu znaků přidá ještě metaznak '^'.

Př.: regulárnímu výrazu ab[^cd] vyhoví např. abx, aby..., ale ne řetězce, které obsahují abc nebo abd.

Metaznak '|' rozdělí jeden regulární výraz na několik podvýrazů. Textový řetězec pak tomuto reg. výrazu vyhovuje jen v případě, že obsahuje alespoň jeden jeho podvýraz.

Př.:  regulárnímu výrazu ab|www|yz vyhovují pouze řetězce obsahující ab, www nebo yz.

Další, trochu složitě zapisované regulární výrazy '[[:<:]]' a '[[:>:]]' značí začátek a konec slova.

Př.: regulárnímu výrazu [[:<:]]Marek[[:>:]] vyhoví pouze slovo Marek.

Velmi praktickou možností je použití tzv. tříd znaků, které jsou v PHP standardně definovány. Regulární výraz s použitím třídy se zapisuje '[[:třída:]]'. Přehled tříd znaků:

Třída Obsah
alnum = písmena anglické abecedy + číslice
alpha = písmena anglické abecedy
blank = mezera + tabulátor
cntrl = řídící znaky
digit = číslice
graph = znaky s grafickým znázorněním
lower = malá písmena anglické abecedy
print = tisknutelné znaky + mezera
punct = interpunkční a pomocné znaky (@...)
space = mezera (+ tabulátor, nová řádka, nová stránka,...)
upper = velká písmena anglické abecedy
xdigit = číslice + písmena a - f, A - F

Př.: regulárnímu výrazu [[:<:]][[:digit:]]{5}[[:>:]] vyhoví pouze pětimístné číslo.

    FUNKCE PRO PRÁCI S REGULÁRNÍMI VÝRAZY
- přehled funkcí:

Funkce Popis
EReg(); = zjistí, jestli řetězec vyhovuje reg. výrazu
EReg_Replace(); = nahrazení řetězce podle reg. výrazu
ERegl(); = zjistí, jestli řetězec vyhovuje reg. výrazu bez ohledu na velikost písmen
ERegl_Replace(); = nahrazení řetězce podle reg. výrazu bez ohledu na velikost písmen

Nyní si jednotlivé funkce popíšeme podrobněji.

int EReg(str reg. výraz, str řetězec, arr shody);

Pokud řetězec vyhovuje regulárnímu výrazu, vrací funkce logickou hodnotu TRUE (pravda), v opačném případě vrací FALSE (nepravda). Třetí parametr funkce je nepovinný a v případě jeho použití se do pole uloží řetězce, které vyhovují jednotlivým podvýrazům reg. výrazu. Do prvku pole s indexem 0 se uloží část řetězce, která vyhovuje celému reg. výrazu.

str EReg_Replace(str reg. výraz, str náhrada, str řetězec);

Tato funkce nahrazuje část řetězce, která vyhovuje reg. výrazu řetězcem náhrada. V parametru náhrada lze použít metaznak \\číslo, který určuje podvýraz regulárního výrazu. Použití metaznaku \\0 zastupuje celý řetězec, který vyhovuje reg. výrazu.

int ERegl(str reg. výraz, str řetězec, arr shody);

Tato funkce je téměř totožná s funkcí EReg(); s tím rozdílem, že není při porovnávání citlivá na velikost písmen.

str ERegl_Replace(str reg. výraz, str náhrada, str řetězec);

Tato funkce je opět téměř totožná s funkcí EReg_Replace(); s tím rozdílem, že není citlivá na velikost písmen.

Tím jsme skončili s regulárními výrazy - v příštím článku začneme s databázovou podporou v PHP.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: