我想使用normalizer class来实现以下目标:
'öäüéô'=> 'o a u e o'
我运行了这个php脚本:
header("Content-Type: text/html; charset=UTF-8");
echo Normalizer::normalize('ö ä ü é ô', Normalizer::FORM_C);
结果是:
ö ä ü é ô
因此输入没有区别。我该怎么办?
答案 0 :(得分:2)
确实没有直接的方法可以做到这一点,但是使用iconv你可以将字符串的字符集更改为另一个没有这些重音符号的字符集,如果使用// TRANSLIT,它将改为使用最接近的字符串近似。
您可以在用户贡献的备注中找到几个示例:http://us2.php.net/manual/en/function.iconv.php。
E:您也可以使用Normalizer类执行此操作:
<?php
header("Content-Type: text/html; charset=UTF-8");
$text = "ö ü ä";
echo preg_replace('/\pM*/u','',normalizer_normalize( $text, Normalizer::FORM_D));
答案 1 :(得分:2)
而不是Normalizer
,您应该使用Transliterator
$str = 'ö ä ü é ô';
echo Transliterator::create('Latin-ASCII')->transliterate($str);