Unicode:从关键字中删除非字母数字字符

时间:2013-06-07 02:16:46

标签: php regex unicode utf-8 internationalization

我希望规范化关键字以摆脱非字母数字,但同时尊重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进行第一次归一化,并删除第二次,它似乎工作正常 - 但我只测试了欧洲字母和希伯来语 - 我不知道如何检查其他语言。

1 个答案:

答案 0 :(得分:0)

您可以找到有关unicode属性here

含义的所有信息