拡張 ASCII 文字セットにある文字の ASCII 値を取得しようとしています。
お気に入り:
echo ord('„');
その出力は次のとおりです。226
しかし、実際の ASCII 値は : 132 です。
私の質問は、1 バイト サイズを超える文字の実際の ASCII 値を取得する方法です。
拡張 ASCII 文字セットにある文字の ASCII 値を取得しようとしています。
お気に入り:
echo ord('„');
その出力は次のとおりです。226
しかし、実際の ASCII 値は : 132 です。
私の質問は、1 バイト サイズを超える文字の実際の ASCII 値を取得する方法です。
ここで解決策を見つけました。あなたの文字は utf8 エンコーディングで 8222 であり、マルチバイト文字 (mb) またはhtml 特殊エンティティと呼ばれます。
function mb_ord($string)
{
if (extension_loaded('mbstring') === true)
{
mb_language('Neutral');
mb_internal_encoding('UTF-8');
mb_detect_order(array('UTF-8', 'ISO-8859-15', 'ISO-8859-1', 'ASCII'));
$result = unpack('N', mb_convert_encoding($string, 'UCS-4BE', 'UTF-8'));
if (is_array($result) === true)
{
return $result[1];
}
}
return ord($string);
}
echo mb_ord('„');
ord
指定された文字列の最初のバイトを単純に取り、その数値を 10 進数形式で返します。期待した結果が得られない場合は、入力が期待したものではない可能性があります。拡張 ASCII のバイト値が必要な場合は、入力文字列を拡張 ASCII でエンコードする必要があります。E2 80 9E
ソースコードファイルがUTF-8として保存されているため、入力は実際にはUTF-8でエンコードされているため、現在、の最初のバイトの値、「„」のUTF-8エンコードを取得している可能性があります。