PHP Normalizer没有显示不同的结果

时间:2013-09-14 12:50:24

标签: php

我想使用normalizer class来实现以下目标:

'öäüéô'=> 'o a u e o'

我运行了这个php脚本:

header("Content-Type: text/html; charset=UTF-8");
echo Normalizer::normalize('ö ä ü é ô', Normalizer::FORM_C);

结果是:

ö ä ü é ô

因此输入没有区别。我该怎么办?

2 个答案:

答案 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);