有人能告诉我PHP函数将ø
转换为Å
吗?
我将æ, ø, å, ö, ä
等特殊字符存储到html编码字符中。
我搜索谷歌和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å
答案 0 :(得分:5)
这取决于你的特殊字符编码的编码(在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 ʓ ʓ ʓ
答案 1 :(得分:1)
我认为这更合适:htmlentities()
答案 2 :(得分:0)
这个怎么样:
$tmp = ('Øving, ære, blå');
$tmp2 = htmlentities($tmp, ENT_COMPAT, 'UTF-8');
echo $tmp.' - '.$tmp2;
从命令行,我得到了预期的字符串:
Øving, ære, blå
答案 3 :(得分:0)
你总是可以这样做:
$tmp = str_replace(array('æ','ø','å'),array('Ø','æ','å'),$tmp);