我希望规范化关键字以摆脱非字母数字,但同时尊重unicode。
这就是我所拥有的:
$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);
我的问题是,这是否有效。是否有一些语言可以删除重要字符?或者不会删除不重要的那些?
我只想说文字 - 没有符号或标点符号。数字还可以。
我不知道Marks是什么,我不确定是否应该过滤其他类型的数字。什么是字母编号? (来自:http://us3.php.net/manual/en/regexp.reference.unicode.php)
一个最大的问题是:我想从希伯来字母中删除元音,但不会从欧洲字母中删除变音符号。标准化步骤是否会正确执行此操作?
编辑:当我测试它时,它从欧洲字母中删除了变音符号。然后我使用KC进行第一次归一化,并删除第二次,它似乎工作正常 - 但我只测试了欧洲字母和希伯来语 - 我不知道如何检查其他语言。