1

我想使用规范器类来实现类似:

'ö ä ü é ô' => 'oaue o'

我运行了这个 php 脚本:

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

结果是:

ö ä ü é ô

所以输入没有区别。我能做些什么?

4

2 回答 2

2

而不是Normalizer你应该使用Transliterator

$str = 'ö ä ü é ô';
echo Transliterator::create('Latin-ASCII')->transliterate($str);
于 2013-09-14T14:49:22.790 回答
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));
于 2013-09-14T13:12:36.040 回答