1

以下のすべてを使用して、データベースから「コード」というフィールドを取得し、すべての HTML エンティティを削除して、サイトに「通常どおり」出力します。

   <?php $code = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $code);
   $code = preg_replace('~&#([0-9]+);~e', 'chr("\\1")', $code); 
   $code = html_entity_decode($code); ?>

ただし、エクスポートされたコードは次のようになります。

progid:DXImageTransform.Microsoft.AlphaImageLoader(src=’img/the_image.png’);

そこで何が起こっているか見てください。文字列で他にいくつのものを実行して、それらを通常のキャラクターに変えることができますか?!

ありがとう!

ジャック

4

4 に答える 4

4
于 2010-03-02T03:34:01.377 に答える
0

chrは ASCII でのみ動作するため、ASCII 以外の文字が台無しになります。あなたがしようとしていることを私が誤解していない限り、正しい charset パラメータを指定して html_entity_decode() を 1 回呼び出すだけで、他の 2 行を取り除くことができます。

于 2010-03-01T23:28:46.373 に答える
0

たとえば、ISO と UTF-8 など、ページとは異なる文字コードを使用している可能性があります。

于 2010-03-01T22:03:41.860 に答える
0

名前には反映されていませんが、html_entity_decode数値参照も変換されます。

// α (U+03B1) == 0xCEB1 (UTF-8)
var_dump("\xCE\xB1" == html_entity_decode('&#x03B1;', ENT_COMPAT, 'UTF-8'));
于 2010-03-01T23:39:34.707 に答える