キリル文字で「ロシア語」という単語が書かれているとしましょう。これは、次の 16 進数に相当します。
Русский
私の質問は次のとおりです。キリル文字の「ロシア語」から上記の16進数値に変換する関数をどのように書くのですか? これと同じ機能が 1 バイト文字でも機能する可能性はありますか?
キリル文字で「ロシア語」という単語が書かれているとしましょう。これは、次の 16 進数に相当します。
Русский
私の質問は次のとおりです。キリル文字の「ロシア語」から上記の16進数値に変換する関数をどのように書くのですか? これと同じ機能が 1 バイト文字でも機能する可能性はありますか?
これら〹
は 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
提供された例は16進数ではありませんが、16進数に変換したい場合は、これを試してください:
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