Regex за отказ на специални норвежки букви в приятелски url - modx

Разработвам страница, използвайки modx revolution. Това е пълен cms с много вградени функции. Ако създам страница в мениджъра, той автоматично ще създаде приятелски URL адрес за мен, сочещ към тази страница.

Проблемът е, че не отрича специалните символи, които имаме в Норвегия, æøå (и главни букви ÆØÅ).

Системата получи вграден модел на регулярен израз, за ​​да премахне URL адреса за повечето лоши знаци, но имам нужда от израза, за да премахна и æøå и ÆØÅ.

Моделът изглежда така:

/[\0\x0B\t\n\r\f\a&=+%#<>"~:`@\?\[\]\{\}\|\^'\\]/

Може ли някой да използва магическите си познания за регулярен израз, за ​​да включи тези 6 букви? Аз съм напълно зелен в регулярния израз и простото добавяне на буквите там не изглежда да работи.

PS: Моля, не използвайте обичайното „бу, не използвайте регулярен израз за това“ тук. Моделът е там с причина и не искам да се забърквам с ядрото, ако трябва да надстроим modx (което е доста вероятно да се случи рано или късно).


person OptimusCrime    schedule 05.12.2011    source източник
comment
Тъй като modx е написан на php, добавих php тага.   -  person stema    schedule 05.12.2011


Отговори (2)


Опитайте се да използвате Unicode. Не знам modx, но тъй като е написан на php, надявам се, че използва регулярни изрази на php preg.

/[\0\x0B\t\n\r\f\a&=+%#<>"~:`@\?\[\]\{\}\|\^'\\\x{00C6}\x{00E6}\x{00C5}\x{00E5}\x{00D8}\x{00F8}]/u

Модификаторът u казва на php да използва режим на съвпадение на unicode, след което интерпретира регулярния израз като низ в unicode.

\x{00C6} е Unicode символът Æ

Моля, проверете сами кода на другите знаци, за да се уверите, че не съм направил грешка, докато съм ги търсил.

Вижте regular-expression.info за използването на unicode в php

Unicode.org за кодовата точка

person stema    schedule 05.12.2011

MODX всъщност има системна настройка, където можете да дефинирате персонализиран клас за транслитерация: http://rtfm.modx.com/display/revolution20/friendly_alias_translit_class

Въпреки това документите са малко оскъдни за това как можете да приложите това. Има съществуващ пакет, създаден от един от основните разработчици, който поддържа транслитерация на псевдоним за немски и руски, но можете лесно да добавите норвежки или друг език към неговата конфигурация:

http://modx.com/extras/package/translit

person okyanet    schedule 12.12.2011