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

时间:2011-06-01 18:45:14

标签: php encoding special-characters

我正在寻找将āžšķūņrūķīš等字符转换为 azskunrukis 的方法。换句话说,用 a 替换ā,用 z 替换ž等。有没有内置的东西,或者我应该创建自己的“来自符号”的“库”?

3 个答案:

答案 0 :(得分:5)

看看iconv's transliteration capabilities

<?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'   IGNORE:这是欧元符号''   平原:
  注意:iconv():在第7行的。\ iconv-example.php中检测到输入字符串中的非法字符   这是欧元符号'

您的示例文本可以使用以下内容进行音译:

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

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

答案 1 :(得分:1)

我不确定任何直接执行此操作的函数,但是有一些转换表的实现在strtr's documentation page的注释中执行类似的操作。他们最终使用的表格直接将每个字符翻译成其等价物,即“ž”=&gt; “Z”。

答案 2 :(得分:1)

作为iconv的替代方案,您可以查看国际/地区扩展的Normalize函数(如果有)。