Regulární výrazy

Regulární výrazy

jak na ně?

Super na modulu mod_rewrite je fakt, že se může v jeho
direktivách používat regulární výrazy. Jako příklad bych
uvedl:

RewriteEngine on
RewriteRule (.*) http://www.cokoliv.com

V tomto příkladě bude jakýkoliv požadavek od uživatele, který míří do
aktuálního adresáře
podstrčen
obsahem z www.cokoliv.com (pokud bych uvedl navíc atribut [R]
šlo by o přesměrování).
Co ale ty regulární výrazy?

  • tečka v zápise znamená, že může jít o jakýkoliv soubor
  • hvězdička znamená, že může jít o jakýkoliv počet souborů

Práce s proměnnými

skvělá to věc

Ne že by převádění mezi soubory bylo úplně na nic, ale je to spíše pro
ilustraci. Mnohem lepší a o něco užitečnější jsou hrátky s proměnnými.

www.mujweb.com/soubor.php?id=9 => www.mujweb.com/uzivatel-9

Řekněte sami, co vypadá či se pamatuje lépe? A to je jen jednoduchá
adresa s jednou proměnnou (id). A teď něco k tomu, jak se to udělá. V
souboru pro mod_rewrite najdu číslo uživatele jako proměnnou (např.
$1) a tuto proměnnou použiji následně pro definici toho, co že se má
podstrčit. Kód tedy bude vypadat následovně:

RewriteRule ^uzivatel-(.*) soubor.php?id=$1

Trocha vysvětlení:

  • přijde požadavek vypsat uživatele, který je označen číslem 99 (tedy
    URL uzivatel-99)
  • mod_rewrite podle kódu pozná, že se jedná o regulární
    výraz
    ^uzivatel-(.*). To co obsahuje závorka v zápise (tedy řetězec
    "99") se uloží do proměnné $1 (1 – jako první závorka)
  • mod_rewrite podstrkává obsah, který leží
    na adrese soubor.php?id=1
  • nyní to tedy odpovídá adrese soubor.php?id=99
  • avšak tato adresa nebude v URL zobrazena, jde o podstrkávání

Regulární výrazy obecně

pár slov k výrazům…

Zde uvedu několik obecných informací, o kterých pojednávají
regulární výrazy:

Hodně důležitou značkou je ^ a zastupuje začátek řetězce,
$ naopak zastupuje konec řetězce, ^$ tedy
znamená prázdný řetězec, ^ab$ vyhoví pouze řetězec ab.
Zajímavým znakem je tečka (.), což je divoký znak a může
zastupovat jakýkoliv jiný znak ^.$ tedy vyhoví jakékoliv
písmeno, číslice nebo jiný znak. Jakýkoliv znak nebo divoký znak můžeme
doplnit znaky ?, + nebo *. ? znamená, že daný znak se může vyskytnout
nejvýše jednou (nebo se taky vyskytnout vůbec nemusí), +
znamená, že se musí vyskytnout nejméně jednou a * znamená,
že se může vyskytnout kolikrát je libo (včetně nuly) Počty opakování lze
také zvolit pomocí složených závorek, například výrazu ^.{3,5}$ vyhoví
jakýkoliv řetězec, který je dlouhý 3,4 nabo 5 znaků. Do hranatých závorek
můžeme vkládat množiny znaků, například výrazu ^[abc]$ vyhoví tři možné
řetězce: a,b,c.

Comments are closed.

© 2012 Iceboy.cz

Designed by That's Profound -- Made free by Spongy Web Directory and Computer RAM / Memory