什么PHP函数将ø转换成Å?

时间:2011-04-15 19:52:03

标签: php

有人能告诉我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å

4 个答案:

答案 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     »       &raquo;         &raquo;
188     ¼       &frac14;        &frac14;
189     ½       &frac12;        &frac12;
190     ¾       &frac34;        &frac34;
191     ¿       &iquest;        &iquest;
192     À       &Agrave;        &Agrave;
193     Á       &Aacute;        &Aacute;
194     Â       &Acirc;         &Acirc;
195     Ã       &Atilde;        &Atilde;
196     Ä       &Auml;          &Auml;
197     Å       &Aring;         &Aring;
...
655     ʏ       ʏ              &#655;
656     ʐ       ʐ              &#656;
657     ʑ       ʑ              &#657;
658     ʒ       ʒ              &#658;
659     ʓ       ʓ              &#659;

答案 1 :(得分:1)

我认为这更合适:htmlentities()

答案 2 :(得分:0)

这个怎么样:

$tmp = ('Øving, ære, blå');
$tmp2 = htmlentities($tmp, ENT_COMPAT, 'UTF-8');
echo $tmp.' - '.$tmp2;

从命令行,我得到了预期的字符串:

&Oslash;ving, &aelig;re, bl&aring;

答案 3 :(得分:0)

你总是可以这样做:

$tmp = str_replace(array('æ','ø','å'),array('&Oslash;','&aelig;','&aring;'),$tmp);