让我们说字符串是
$uni_str="06280628002006280628";
在阿拉伯语中,它是:بببب
所以,如何在不使用html的情况下在php中转换它:
for($i=0; $i<strlen($uni_str); $i+=4)
{
$text_str .= "&#x".substr($uni_str,$i,4).";";
}
因为这段代码只解决了在html页面中查看结果的问题,
但我想在php变量中得到结果。
因为上面代码的结果就像
بب  بب
答案 0 :(得分:2)
我找到了解决方案,希望能提供帮助:
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包含阿拉伯字符串
答案 1 :(得分:1)
使用hex2bin
将十六进制解码为一个字节序列,然后您可以将每对字节解压缩为UTF-16代码单元(我假设您的字符串代表)。
假设您正在生成UTF-8文本输出:
iconv('UTF-16BE', 'UTF-8', hex2bin('06280628002006280628'))
答案 2 :(得分:0)
以下代码允许您解码字符,并在必要时重新编码
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) "සින්ග්ලිෂ්"
如果您想要更复杂的功能,请参阅How to get the character from unicode code point in PHP?。