http://www.php.net/manual/ja/function.mb-convert-encoding.php
$str = "ABCDEあいうえお";
$str = mb_convert_encoding($str, "HTML-ENTITIES", "UTF-8");
echo $str;
実行結果)
ABCDEあいうえお
2.mb_encode_numericentity関数を使う
http:/www.php.net/manual/ja/function.mb-encode-numericentity.php
$convmapの配列は (開始コード, 終了コード, オフセット, マスク) がワンセットで、複数指定可能。
・開始コード:変換するコード領域の始まり。例えば0x80とすると0x00~0x7fの範囲は変換されない。
・終了コード:変換するコード領域の終わり。
・オフセット:先頭からの距離。例えば0x1とすると符号位置が1ずれた結果が返ってくる。
・マスク:値を取り出すために用いるビットパターン。2進数で、取り出したいビットを1としたデータ。
例えば0xff(0b11111111)だと取り出される値は8ビット。
(0x=16進数であることを示す/0b=2進数であることを示す/何もない場合は10進数)
$str = "ABCDEあいうえお";
$convmap = array(0x000000, 0x10ffff, 0, 0x1fffff);
$str = mb_encode_numericentity ($str, $convmap, "UTF-8");
echo $str;
実行結果)
ABCDEあいうえお
3.UTF-32のバイナリデータ化→bin2hexで16進数に変換(1)
mb_strlen(http://www.php.net/manual/ja/function.mb-strlen.php)で文字列の長さを取得して1文字ずつ処理
$str = "ABCDEあいうえお";
$len = mb_strlen($str, "UTF-8");
for($n=0;$n<=$len-1;$n++){
$utf32 = mb_convert_encoding(mb_substr($str, $n, 1, "UTF-8"), "UTF-32", "UTF-8");
echo ''.ltrim(bin2hex($utf32), 0).';';
}
実行結果)
ABCDEあいうえお
mb_convert_encoding:文字エンコーディングの変換に使用
http:///www.php.net/manual/ja/function.mb-convert-encoding.php
bin2hex:バイナリデータを16進数値に変換するのに使用
http://www.php.net/manual/ja/function.bin2hex.php
ltrim:先頭のゼロを削除するのに使用
http://www.php.net/manual/ja/function.ltrim.php
4.UTF-32のバイナリデータ化→bin2hexで16進数に変換(2)
preg_splitで1文字ずつ分割して処理
例2 文字列を文字要素に分割引用元:PHP(http://www.php.net/manual/ja/function.preg-split.php)
<?php
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>
マルチバイト文字を扱う場合は、パターン修飾子のu(UTF-8としてパターンマッチ)を使用
$str = "ABCDEあいうえお";
$result = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
mb_convert_variables("UTF-32", "UTF-8", $result);
foreach($result as &$value){
$value = ltrim(bin2hex($value), 0);
}
unset($value);
echo ''.implode(';', $result).';';
実行結果)
ABCDEあいうえお
mb_convert_variables:配列の文字エンコーディングを変換するのに使用
http://www.php.net/manual/ja/function.mb-convert-variables.php
5.その他の方法
UTF-32のバイナリデータをunpackするとか。
http://www.php.net/manual/ja/function.unpack.php