1

我正在使用 modx 革命开发一个页面。它是一个完整的 cms,具有许多内置功能。如果我在管理器中创建一个页面,它会自动为我生成一个指向该页面的友好 url。

问题是这并不否认我们在挪威拥有的特殊字符æøå(和大写ÆØÅ)。

系统有一个内置的正则表达式模式来去除大多数坏字符的 url,但我也需要去除 æøå 和 ÆØÅ 的经验。

该模式如下所示:

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

任何人都可以使用他们神奇的正则表达式知识来包含这 6 个字母吗?我在正则表达式方面完全是绿色的,只是在那里添加字母似乎没有用。

PS:请不要在这里使用常见的“嘘,不要为此使用正则表达式”。这种模式的存在是有原因的,如果我们必须升级 modx(这很可能迟早会发生),我不想乱搞核心。

4

2 回答 2

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

修饰符告诉 php 使用 unicode 匹配模式,然后u它将正则表达式解释为 unicode 字符串。

\x{00C6}是 Unicode 字符 Æ

请自行检查其他字符的代码,以确保我在查找它们时没有出错。

有关php 中的 unicode 用法,请参见regular-expression.info

Unicode.org用于代码点

于 2011-12-05T13:15:43.500 回答
1

MODX 实际上有一个系统设置,您可以在其中定义自定义音译类:http ://rtfm.modx.com/display/revolution20/friendly_alias_translit_class

然而,关于如何实现这一点的文档有点稀疏。有一个由核心开发人员构建的现有包,它支持德语和俄语的别名音译,但您可以轻松地将挪威语或任何其他语言添加到其配置中:

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

于 2011-12-12T16:31:53.157 回答