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 |
| = 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):
- PHP část I. - Úvod do jazyka
- PHP část II. - Instalace
- PHP - Část V. (Operátory)
- PHP - Část VIII.
- PHP - Část IX. (Vlastní funkce)
- PHP - Část X. (Proměnné ve funkcích)
- PHP - Část XI.
- PHP - Část XII. (Regulární výrazy)
- PHP - Část XIII. (Regulární výrazy podruhé)
- PHP - Část XIV. (PHP a databáze)
- PHP - Část XV. (Instalace MySQL ve Windows)
- PHP - Část XVI. (Instalace MySQL na LINUXu)
- PHP - Část XVII. (MySQL - vytvoření nové databáze)
- PHP - Část XVIII. (Vkládání dat do databáze)
- PHP - Část XIX. (MySQL - získávání dat z databáze)
- PHP - Část XX. (SQL - získávání dat z databáze II.)
- PHP - Část XXI. (SQL - získávání dat z databázových tabulek III)
- PHP - Část XXII. (MySQL - modifikace a mazání dat v tabulce)
- PHP část XXIII. - MySQL - přístupová práva
- PHP část XXIV. - PostgreSQL
- PHP část XXV. - Cookies
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007



