【发布时间】:2020-10-01 05:23:32
【问题描述】:
在 PHP 中,
如何将 mb_convert_encoding 中的 Unicode 值转换为整数
$A = mb_convert_encoding('و',"UTF-8");
$A = 'و';
我需要将'و' 转换为1608,这是'و' 的十进制等值
【问题讨论】:
在 PHP 中,
如何将 mb_convert_encoding 中的 Unicode 值转换为整数
$A = mb_convert_encoding('و',"UTF-8");
$A = 'و';
我需要将'و' 转换为1608,这是'و' 的十进制等值
【问题讨论】:
你想要mb_ord()。 mb_ord() 给你一个 unicode 字符的代码点,mb_chr() 是相反的。
<?php
$A = 'و';
echo mb_ord($A); // 1608
echo mb_chr(1608); //و
如果你不能使用php7,有一个php5 polyfill on the man page。我根据手册页上的内容稍作修改。
if (!function_exists('mb_ord')) {
function mb_ord($u) {
$k = mb_convert_encoding($u,"UTF-8");
$k1 = ord(substr($k, 0, 1));
$k2 = ord(substr($k, 1, 1));
return $k2 * 256 + $k1;
}
}
【讨论】:
以下代码在所有 PHP 5、PHP 7 中都能正常工作
$ret = mb_convert_encoding($char, 'UTF-32BE', 'UTF-8');
return hexdec(bin2hex($ret));
【讨论】: