0

私は wordpress のプラグイン CFDB を使用しており、アクセントで名前をフィルタリングしようとしています。

プラグインの作成者は、正規表現で動作していると私に言いました。

フィルターはモード修飾子 (大文字と小文字を区別しない "i" など) を使用して動作しています。

[cfdb-datatable form="DB" filter="Name~~/.*$_GET(value2filter).*/i"]

ここで、アクセントを区別しないための一種の「モード修飾子」を追加したいと思います。アクセントとそのユニコード翻訳を追加しようとしましたが、短いコードでは機能しません。何か案が?

4

1 に答える 1

0

アクセントの無視、つまり とのマッチング"é""e"、単一の Unicode ポイント文字では「優雅に」行うことはできません。あなたは次のようなことをしなければならないでしょう:

/jos[eé]/i

のアクセント バリアントを一致Joseさせるには、アプリ レイヤーで正規表現を構築する必要があります。これは、すべての文字のすべてのバリアントを認識している必要があります。

ただし、入力文字が分音記号(前の文字と「結合」された別個のコード ポイント) を使用してアクセントを付けられている場合は、posix の分音記号クラスを使用できます。次に\p{M}例を示します。

/jose\p{M}?/i

次に\p{M}?、すべての文字(またはすべての母音)の後に挿入して、正規表現を作成できます。

于 2015-08-18T18:04:59.840 に答える