如何将unicode转换为php中的阿拉伯字符


How to convert unicode to arabic characters in php?

假设字符串为

$uni_str="06280628002006280628";

阿拉伯语:بب بب

那么,我如何在PHP中转换它而不使用HTML,如:
    for($i=0; $i<strlen($uni_str); $i+=4)
    {
        $text_str .= "&#x".substr($uni_str,$i,4).";";
    }

,因为这段代码只是解决了在HTML页面中查看结果的问题,

但是我想把结果放在PHP变量中

,因为上面代码的结果类似于

&#x0628;&#x0628;&#x0020;&#x0020;&#x0628;&#x0628;

我找到了解决方案,希望能有所帮助:

function uni2arabic($uni_str) 
{   
      for($i=0; $i<strlen($uni_str); $i+=4)
         {
                $new="&#x".substr($uni_str,$i,4).";"; 
                $txt = html_entity_decode("$new", ENT_COMPAT, "UTF-8");
                $All.=$txt;
         }
    return $All;
} 
变量$All包含阿拉伯字符串

使用hex2bin将十六进制解码为字节序列,然后您可以将每对字节解包为UTF-16代码单元(我假设您的字符串表示)。

假设您正在生成UTF-8文本输出:

iconv('UTF-16BE', 'UTF-8', hex2bin('06280628002006280628'))

下面的代码允许您解码字符,并在必要时重新编码它们

:

if (!function_exists('codepoint_encode')) {
    function codepoint_encode($str) {
        return substr(json_encode($str), 1, -1);
    }
}
if (!function_exists('codepoint_decode')) {
    function codepoint_decode($str) {
        return json_decode(sprintf('"%s"', $str));
    }
}

如何使用:

header('Content-Type: text/html; charset=utf-8'); 
var_dump(codepoint_encode('ඔන්ලි'));
var_dump(codepoint_encode('සින්ග්ලිෂ්'));
var_dump(codepoint_decode(''u0d94'u0db1'u0dca'u0dbd'u0dd2'));
var_dump(codepoint_decode(''u0dc3'u0dd2'u0db1'u0dca'u0d9c'u0dca'u0dbd'u0dd2'u0dc2'u0dca'));

:

string(30) "'u0d94'u0db1'u0dca'u0dbd'u0dd2"
string(60) "'u0dc3'u0dd2'u0db1'u0dca'u0d9c'u0dca'u0dbd'u0dd2'u0dc2'u0dca"
string(15) "ඔන්ලි"
string(30) "සින්ග්ලිෂ්"

如果您想要更复杂的功能,请参见如何在PHP中从unicode代码点获取字符?