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