我想使用规范器类来实现类似:
'ö ä ü é ô' => 'oaue o'
我运行了这个 php 脚本:
header("Content-Type: text/html; charset=UTF-8");
echo Normalizer::normalize('ö ä ü é ô', Normalizer::FORM_C);
结果是:
ö ä ü é ô
所以输入没有区别。我能做些什么?
而不是Normalizer
你应该使用Transliterator
$str = 'ö ä ü é ô';
echo Transliterator::create('Latin-ASCII')->transliterate($str);
确实没有直接的方法可以做到这一点,但是使用 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));