谁能告诉我什么 PHP 函数将 ø
转换成 Å
?
我将 æ, ø, å, ö, ä
等特殊字符存储为 html 编码字符。
我搜索过 google 和 Stackoverflow,但不知道要搜索什么。
我以前管理过,但不记得如何:(
以下无效:
$tmp = ('Øving, ære, blå');
$tmp2 = htmlspecialchars($tmp);
echo $tmp.' - '.$tmp2;
输出是:Øving, ære, blå - Øving, ære, blå
我也尝试过htmlentities
:
$tmp = ('Øving, ære, blå');
$tmp2 = htmlentities($tmp);
echo $tmp.' - '.$tmp2;
此输出:Øving, ære, blå - Ã�ving, ære, blÃ¥
当我想要的时候
Øving, ære, blå - Øving, ære, blå
最佳答案
这取决于特殊字符的编码方式(在 php 中)。 假设你可以使用 UTF-8
$str2 = htmlentities($str2,ENT_COMPAT,"UTF-8");
但下面的可能更健壮,(如果你支持 mb_ 函数)
$str2 = mb_convert_encoding ($str1,"HTML-ENTITIES","UTF-8");
更新:在指定的示例(字符 u+00C5)中,我已验证两者都有效。并且第二个在以下意义上确实更健壮:当没有为给定的 unicode 字符找到命名实体时,第一个备选方案保持不变,第二个备选方案使用数字实体。如果我们想避免在 HTML 页面中出现非 ascii 字符,则首选第二种。要检查的一些行:
<?php
for($i=129;$i<3000;$i++)
printUnicode($i);
function printUnicode($value) {
$one_character = pack("L", $value);
$u8 = iconv("UTF-32", "UTF-8", $one_character);
echo join("\t",array(
$value,
$u8,
htmlentities($u8,ENT_COMPAT,"UTF-8"),
mb_convert_encoding($u8,"HTML-ENTITIES","UTF-8")))
. "\n";
}
?>
和一些示例输出:
187 » » »
188 ¼ ¼ ¼
189 ½ ½ ½
190 ¾ ¾ ¾
191 ¿ ¿ ¿
192 À À À
193 Á Á Á
194 Â Â Â
195 Ã Ã Ã
196 Ä Ä Ä
197 Å Å Å
...
655 ʏ ʏ ʏ
656 ʐ ʐ ʐ
657 ʑ ʑ ʑ
658 ʒ ʒ ʒ
659 ʓ ʓ ʓ
关于php - 什么 PHP 函数将 ø 转换为 Å?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5681661/