假设我有用西里尔文写的“俄语”这个词。这相当于十六进制中的以下内容:
Русский
我的问题是:如何编写一个函数,从西里尔文的“俄语”到上面的十六进制值?同样的功能是否也适用于单字节字符?
假设我有用西里尔文写的“俄语”这个词。这相当于十六进制中的以下内容:
Русский
我的问题是:如何编写一个函数,从西里尔文的“俄语”到上面的十六进制值?同样的功能是否也适用于单字节字符?
这些〹
东西被称为 HTML 实体。在 PHP 中有一个函数可以创建这些:mb_encode_numericentity
Docs,它是多字节字符串扩展(Demo)的一部分:
$cyrillic = 'русский';
$encoding = 'UTF-8';
$convmap = array(0, 0xffff, 0, 0xffff);
$encoded = mb_encode_numericentity($cyrillic, $convmap, $encoding);
echo $encoded; # русский
但是:您需要知道西里尔字符串的编码。在这种情况下,我选择UTF-8
了 ,根据它您需要修改$encoding
函数和$convmap
数组的参数。
您提供的示例不是十六进制,但如果您想转换为十六进制,请尝试以下操作:
function strToHex($string)
{
$hex='';
for ($i=0; $i < strlen($string); $i++)
{
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
function hexToStr($hex)
{
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2)
{
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
echo strToHex('русский'); // d180d183d181d181d0bad0b8d0b9