英数字以外を取り除くためにキーワードを正規化したいのですが、ユニコードを尊重します。
ここに私が持っているものがあります:
$keyword = trim($keyword);
$keyword = normalizer_normalize($keyword, Normalizer::FORM_KD);
$keyword = preg_replace('/[^\p{L}\p{N} ]/u', '', $keyword);
$keyword = normalizer_normalize($keyword, Normalizer::FORM_KC);
私の質問は、これが機能するかどうかです。これにより重要な文字が削除される言語はありますか? それとも、重要でないものを削除しませんか?
記号や句読点は必要ありません。数字はOKです。
マークが何であるかはわかりません。また、他の種類の数値をフィルタリングする必要があるかどうかもわかりません。文字番号とは何ですか?(出典: http://us3.php.net/manual/en/regexp.reference.unicode.php )
最大の問題は、ヘブライ文字から母音を削除したいのですが、ヨーロッパ文字から分音記号を削除したくないということです。正規化ステップはこれを適切に行いますか?
編集:これをテストしたところ、ヨーロッパ文字から分音記号が削除されました。次に、最初の正規化に KC を使用し、2 番目の正規化を削除しましたが、正しく動作しているように見えましたが、ヨーロッパ文字とヘブライ語のみをテストしました。他の言語を確認する方法はわかりません。