--=REKLAMA=--

Wyrażenia regularne w argumentach parametrów

Z Joomla!WikiPL

Wersja Danielg28 (dyskusja | edycje) z dnia 16:55, 26 sie 2011

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

Wyrażenia regularne w argumentach parametrów - Joomla! Joomla w wersji 1.5.x J 16.png J 17.png

Niektóre argumenty parametrów mogą posiadać, jako wartość, wyrażenie regularne. Na przykład, argumenty filter i exclude dla typów parametrów filelist i imagelist. Jest to niezwykle przydatne, ale wymaga większej wiedzy na temat składni wyrażeń regularnych, aby móc używać ich efektywnie.

Opisano tu przykłady prostych wyrażeń regularnych, które można używać w kontekście parametrów szablonu. Pełne odniesienie do składni wyrażeń regularnych wykracza poza zakres tej wiki, ale można znaleźć w Internecie więcej informacji na ten temat.

Prosty filtr ciągu

Załóżmy, że chcesz użyć parametru typu filelist, aby wyświetlić listę plików w danym katalogu. Istnieje wiele plików w katalogu, ale chcesz by wymienione były tylko te z rozszerzeniem '.php'. Następnie należy użyć tego argumentu w elemencie <param>

filter = “\.php”

Pierwszą rzeczą, na którą trzeba zwrócić uwagę jest wiodący znak backslash. Jest to konieczne, ponieważ znak "." ma specjalne znaczenie w wyrażeniach regularnych. Znak backslasha powoduje że pierwszy znak za nim traktowany jest dokładnie takim jakim jest, co da nam zwykłą kropkę ".".

Efektem zastosowania tego filtru, będą tylko te pliki, które w dowolnym miejscu swojej nazwy, posiadają te znaki w takiej kolejności występowania “.”, “p”, “h”, “p”

Mocowanie do końca łańcucha

Jeśli zastosujemy filtr z poprzedniego przypisu, to mając plik o nazwie configuration.php-dist - zostałby on zaakceptowany, gdyż znajduje się w nim ciąg “.php” w środku łańcucha. Jeśli naszym zamiarem było uzyskanie tylko plików kończących się na ".php" powinniśmy zastosować filtr:

filter = “\.php$”

Znak "$" (dolar) w wyrazeniu regularnym odpowiada za to, że szukany ciąg musi znajdować się na końcu łańcucha. Dzięki temu plik configuration.php zostanie zaakceptowany, a configuration.php-dist już nie.

Mocowanie do początku łańcucha

Jeśli chcesz by wybrane zostały tylko te plik, które zaczynają się od słowa "joomla", filtr powinien wyglądać tak:

filter = “^joomla”

Znak “^” w wyrażeniach regularnych odpowiada za to, by poszukiwane wyrażenie zaczynało się dokładnie na początku przeszukiwanego łańcucha.

Mocowanie na obu końcach łańcucha

Jeśli chciałbyś wyświetlić wszystkie pliki zaczynające się od słowa “joomla” i kończące się na “.php”, nie dbając o to co znajduje się pomiędzy nimi, to filtr powinien wyglądać tak:

filter = “^joomla(.*)\.php$”

Znak "^" powoduje poszukiwanie na początku łańcucha słowa "joomla", a znak "$" powoduje że poszukiwany ciąg ma kończyć się na ".php". Dodatkowo w środku znajduje się "(.*)" co oznacza że pomiędzy końcem a początkiem wyszukiwanego ciągu może znajdować się dowolny pojedynczy znak (to ta "."), i może on występować dowolną ilość razy, w tym nawet zero razy (to ta "*"). Nawiasy służą do oddzielenia tego ciągu od reszty poszukiwanych fraz.

Rozróżnianie wielkości liter

Należy pamiętać że wyrażenia regularne rozróżniają wielkości liter. Stosując poprzednie przykłady, możemy natrafić na pliki zaczynające się zarówno od "Joomla" jaki i "joomla". Niestety te z "Joomla" nie zostaną załadowane. Aby temu zaradzić należy zastosować taki filtr:

filter = “^[Jj]oomla”

Dzięki zapisowi "[Jj]" zostaną dopasowane słowa "Joomla" i "joomla". Nawiasy kwadratowe “[]” wskazują nam klasę znaków i powinny zawierać wszystkie znaki jakie chcemy dopasować. Na przykład jeśli poszukiwany ciąg miałby dopasować te litery “s”, “t”, “u” or “v” należałoby zapisać to tak:

filter = “^[stuv]oomla”
 
czyli pasowałyby : soomla, toomla, uoomla, voomla

lub tak (bo są one ułożone kolejno w alfabecie):

filter = “^[s-v]oomla”
 
czyli pasowałyby : soomla, toomla, uoomla, voomla

lub tak, jeśli miały by to być i małe i duże litery:

filter = “^[s-vS-V]oomla”
 
czyli pasowałyby : soomla, toomla, uoomla, voomla, Soomla, Toomla, Uoomla, Voomla

Filtrowanie listy rozszerzeń

Jeśli chcesz filtrować pliki w zależności od rozszerzenia danego pliku, i jeśli to ma być tylko jedno rozszerzenie, powinieneś zastosować taki filtr:

filter = “\.php$”

Ale co, gdy chcesz kilka rodzajów rozszerzeń, np. “.php”, “.html” i “.txt” ? Należy to zrobić tak:

filter = “\.php$|\.html$|\.txt$”

Znak "|" powoduje, że dopasowane może być alternatywnie to |lub to |lub to

Można zauważyć że typ parametru imagelist (oraz podobnie filelist) zawierają właśnie taki filtr

filter = “\.png$|\.gif$|\.jpg$|\.bmp$|\.ico$”

Zobacz także

Lista wszystkich typów parametrów dla Joomla! 1.5

calendar  : category : editors  : filelist  : folderlist  : helpsites  : hidden  : imagelist  : languages  : list  : menu  : menuitem  : password  : radio  : section  : spacer  : sql  : text  : textarea  : timezones  : usergroup

Lista wszystkich typów pól formularzy dla Joomla! 1.7

accesslevel  : cachehandler  : calendar  : category  : checkbox  : checkboxes  : combo  : componentlayout  : contentlanguage  : editor  : editors  : file  : filelist  : folderlist  : groupedlist  : helpsite  : hidden  : imagelist  : integer  : language  : list  : media  : menu  : menuitem  : modulelayout  : password  : radio  : rules  : sessionhandler  : spacer  : sql  : templatestyle  : text  : textarea  : timezone  : user  : usergroup



  • Wyrażenia regularne w argumentach parametrów - czyli, jak używać wyrażeń regularnych w wartościach parametrów.

Dziękujemy za wkład

» danielg28,