電子書籍の厳選無料作品が豊富!

10進数数値文字参照を文字列に変換したいです。
(「変… こういうヤツを日本語にしたい)

mb_decode_numericentity第2引数に
>convmap は変換するコード領域を指定する配列です
とあるのですが、これはどうやって指定するのでしょうか?

PHP: mb_decode_numericentity - Manual
http://jp2.php.net/mb_decode_numericentit

下の方に
$convmap = array (0x0, 0xffff, 0, 0xffff);
$output = mb_decode_numericentity($intput, $convmap, 'UTF-8');
と書かれているのですが、「0x0, 0xffff, 0, 0xffff」の意味が分かりません。
「10進数数値文字」を変換したい時は、ここをどう書けば良いのでしょうか?

A 回答 (1件)

>「0x0, 0xffff, 0, 0xffff」の意味が分かりません。



convmapはマニュアルにあるとおり

int start_code1, int end_code1, int offset1, int mask1

でワンセットです。当然(必要があれば)開始コード~終了コードの範囲指定で複数のセットを指定することも可能です。例示されている(0, 0xffff, 0, 0xffff)は0~65535(0x0000~0xffff)の範囲に対して、オフセットなし(0)で、そのまま変換する(マスクがフルビット)という意味です。おそらくは「これ以外の指定をする必要があるエンコード」が存在するのでしょうけど、寡聞にして知りません。少なくとも日本語を扱っている範囲では(0x0, 0xffff, 0, 0xffff)の指定で困ることがないです。



なお、数値文字参照「だけ」に拘らなければ

mb_convert_encoding($html_source, $output_encoding, 'HTML-ENTITIES');

でも出来るらしいです(phpでサポートされる文字エンコードにHTML-ENTITIESもある)。

http://www.php.net/manual/ja/mbstring.supported- …
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
大変参考になりましたー

お礼日時:2013/05/09 09:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!