如何将特殊字符转换为标准字符


How to Convert Special Chars to Standard Chars?

我正在寻找将字符(如āžšķ́ņrīš)转换为azskunrukis的方法。换言之,将ā替换为a,用z来替换ž

看看iconv的音译功能:

<?php
$text = "This is the Euro symbol '€'.";
echo 'Original : ', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
echo 'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
echo 'Plain    : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;
?>

上面的例子将输出类似于:

原件:这是欧元符号"€"
TRANSLIT:这是欧元符号"EUR"
这是欧元符号"
普通:
注意:iconv():在中的输入字符串中检测到非法字符。''第7行的iconv-example.php
这是欧元符号""

您的示例文本可以使用进行文字转换

$translit = iconv('UTF-8', 'US-ASCII//TRANSLIT', 'āžšķūņrūķīš');

以下是您提供的文本示例:http://ideone.com/MJHvf

我不确定是否有任何函数可以直接做到这一点,但在strtr文档页面上的注释中,有一些翻译表的实现可以做到这一步。他们最终使用了一个表,该表将每个字符直接翻译为其等效字符,即"ž"=>"z"。

作为iconv的替代方案,您可以检查intl扩展的Normalize函数(如果可用)。