使用php进行utf-8 unicode转换的编号

时间:2013-02-10 12:08:26

标签: php string utf-8

其实我的预期结果是 - 零0 一个1 两个২ 三3 四.4 五.5 六.6 七.7 八点8 9月9日

但我得到了 - 零&#ý9;ý9; 37; 6;ý9;ý9; 37;ý9; 38 ;;      one&#ý9;ý9; 37; 6;ý9;ý9; 37;ý9;;
     两个ý9;ý9; 37; 6;
     三ý9; 37;
     四ý9; 38;
     五ý9;
     六6
     七7      八8      九点9 请求帮助我。 代码:

$n=array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');

 $x=array("০", "১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯");

$on='O 0
 one 1
 two 2
 three 3
 four 4
 five 5
 six 6
 seven 7
 eight 8
 nine 9';

 $converted = nl2br(str_replace($n, $x, $on));


 echo $converted;

2 个答案:

答案 0 :(得分:1)

str_replace不是编码安全的。您有多字节str_replacemb_str_replacehere的实现:

function mb_str_replace($needle, $replacement, $haystack)
{
    $needle_len = mb_strlen($needle);
    $replacement_len = mb_strlen($replacement);
    $pos = mb_strpos($haystack, $needle);
    while ($pos !== false)
    {
        $haystack = mb_substr($haystack, 0, $pos) . $replacement
                . mb_substr($haystack, $pos + $needle_len);
        $pos = mb_strpos($haystack, $needle, $pos + $replacement_len);
    }
    return $haystack;
}

编辑: Oups,您的字符是HTML编码的,而不是PHP编码问题。

答案 1 :(得分:1)

您要为此目的使用的功能是strtr()

$x = array("০", "১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯");
$converted = nl2br(strtr($on, $x));
echo $converted;

产生以下内容:

  <0> O 0
一个1
两个২
三个   3
四4
五5
六6七七7八八8九9

str_replace()在这里不起作用,因为数组中的后面条目正在替换先前条目完成的替换中的字符。

P.S。该阵列确实应该是一个关联数组(即“0”=&gt;“0”)。我懒得做出改变,只是使用整数键恰好是正确的事实。