1

modx Revolutionを使用してページを開発しています。多くの組み込み機能を備えた完全な cms です。マネージャーでページを作成すると、そのページを指すフレンドリーな URL が自動的に生成されます。

問題は、ノルウェーの特殊文字 æøå (および大文字の ÆØÅ) を否定していないことです。

システムには、ほとんどの悪い文字の URL を削除する正規表現パターンが組み込まれていますが、æøå と ÆØÅ も削除するためのエクスプレッションが必要です。

パターンは次のようになります。

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

魔法の正規表現の知識を使って、これらの 6 文字を含めることができる人はいますか? 私は正規表現に完全に慣れていませんが、そこに文字を追加するだけではうまくいかないようです。

PS: ここではよくある「ブー、これには正規表現を使用しないでください」を使用しないでください。このパターンには理由があります。また、modx をアップグレードする必要がある場合 (遅かれ早かれ起こる可能性が高い)、コアをいじりたくありません。

4

2 に答える 2

2

Unicodeを使用してみてください。modxはわかりませんが、phpで書かれているので、phppregの正規表現を使用しているといいのですが。

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

修飾子は、uphpにUnicodeマッチングモードを使用するように指示し、正規表現を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

ただし、これをどのように実装するかについてのドキュメントは少しまばらです。ドイツ語とロシア語のエイリアス音訳をサポートするコア開発者の 1 人によって構築された既存のパッケージがありますが、その構成にノルウェー語やその他の言語を簡単に追加できます。

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

于 2011-12-12T16:31:53.157 に答える