2012-04-24 6 views
1

エンコードに問題があります。私が望む出力は:PHPでASCIIコードを一重引用符でUTF-8に変換する

string(17) "New & old" 

私は二重引用符を使用しているときの出力です。

これは私のコードです。一重引用符は他の関数の出力であるため変更できません。

$string = 'New \x26amp\x3Bamp\x3B old'; 
$string = iconv('ASCII', 'UTF-8//IGNORE', $string); 
var_dump($string); 

これが私の出力です:単一引用符を使用するとき

string(26) "New \x26amp\x3Bamp\x3B old" 

だから、どのように私は、この動作を変更することができます。文字列を一重引用符から二重引用符に変換できますか?ここで

+0

あなたの入力形式は、あなたのスクリプトがうまくいかない理由である 'UTF-8'ではありません。その良いあなたはちょうど' preg_replace'または 'str_replace' – Baba

答えて

2

はそれを行うための一つの方法です:

$str = preg_replace_callback('/\\\x([0-9A-F]{2})/', function ($m) { 
    return pack('H*', $m[1]); 
}, $str); 

それは、それが表す実際のバイトを16進表記を置き換えています。 Unicodeとあまり関係がありません。

+0

あなたはこのアプローチで私の人生を保存しました、ありがとう – suarsenegger

関連する問題