dポイントプレゼントキャンペーン実施中!

色々と探し尽くしたのですが、

安室奈美&#x6075

のような文字列を

安室奈美恵

という普通の文字列に直す方法が解りません。

chr pack

とかが引っかかりましたが、
どうやら設定が必要なようでお手上げです。

どなたかご教授よろしくお願い致します

A 回答 (5件)

ANo.2です。



>パラメータとかあるのでしょうか?
マニュアルに書いてあります。

3つ目の引数(パラメータ)に適切な文字セットを指定する必要があるのでしょう。
    • good
    • 0
この回答へのお礼

自己解決しました。
HTML実体参照とかいうものだったようです。

html_entity_decode では通常の日本文字部分がデコードできないようなので、
mb_decode_numericentity を使いました。


//16進数を10進数に変換する(mb_decode_numericentityは16進数に未対応なので)
function hex2Dec($str){
$str = preg_replace_callback(
"/&#(x|X)([^;]+);/",
create_function(
'$m',
'return "&#".hexdec($m[2]).";";'
),
$str
);
return $str;
}

//UTF-8のファイルを開いて、16進数の文字列なら日本語変換を行う
if(preg_match("/&#x/i",$data[4])){
$data[4]=mb_decode_numericentity(hex2Dec($data[4]), array(0, 0xffff, 0, 0xffff), "UTF-8");
}


しばらくプログラミングから離れていたので
いい頭の体操になりました。

また質問する時は宜しくお願いいたします。

お礼日時:2009/11/23 05:58

数値文字参照というものですね。


html_entity_decode("安室奈美恵",ENT_QUOTES,"UTF-8");
で文字に戻せます。
    • good
    • 0
この回答へのお礼

都合により、プログラムがSJIS、
読み込みファイルがUTF-8というややこし環境のせいか、
画面上は日本語でも、
ソースを見るとデコードされていません。

環境設定に何かあるのかも?

一応解決しました。
ありがとうございます。

お礼日時:2009/11/23 06:23

16進数ではなく、URLエンコードかと思われます。


下のサイトにてデコードすると、文字が表示されます。
http://home.kendomo.net/board/decode/
    • good
    • 0
この回答へのお礼

ありがとうございます。
でもURLエンコードでこうはならないのでは?

自前プログラムでの変換がしたいのであります。

お礼日時:2009/11/22 15:11

html_entity_decode()関数でデコードできますよ。


http://jp.php.net/manual/ja/function.html-entity …
    • good
    • 0
この回答へのお礼

デコードできません。

画面上では漢字が表示されますが、
ソースを見ると、相変わらず

安室奈美&#x6075

が表示されてます?

パラメータとかあるのでしょうか?

独学ゆえの・・・

お礼日時:2009/11/22 15:08

>安室奈美&#x6075


これはどう見ても私には16進数には見えません
根本的に何かが間違っちゃってるのではないでしょうか?
    • good
    • 0
この回答へのお礼

思い出しました。
メールアドレスを暗号(?)化するための
あれでしたね。

お礼日時:2009/11/22 15:05

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