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

可能是您使用的字符编码与您的页面不同,例如 ISO 与 UTF-8。

于 2010-03-01T22:03:41.860 回答
0

chr仅适用于 ASCII,因此您的非 ASCII 字符会变得混乱。除非我误解了您要执行的操作,否则您只需要使用正确的字符集参数一次调用 html_entity_decode() 即可,并且可以摆脱其他两行。

于 2010-03-01T23:28:46.373 回答
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 回答