1

我需要从我正在使用 Curl 和 simplehtml dom 解析的网站中删除所有狡猾的 html 字符。

<?php
$html = "this is&nbsp;a text";
var_dump($html);
var_dump(html_entity_decode($html,ENT_COMPAT,"UTF-8"));

哪个输出

string(19) "这是一个文本"

string(15) "这是┬á文本"

我不想使用 preg*,因为文本中有其他字符(例如 °)。这让我快疯了!

谢谢,詹姆斯

4

2 回答 2

4

您需要使用标头指定输出编码:

<?php
    header('Content-Type: text/html; charset=utf-8');

    $html = "this is&nbsp;a text";
    var_dump($html);
    var_dump(html_entity_decode($html,ENT_COMPAT,"UTF-8"));
?>

浏览器默认不采用 UTF-8,这就是它显示错误字符的原因。

于 2013-03-07T17:32:51.907 回答
1

如果这是唯一需要替换的字符,请使用str_replace()

var_dump(str_replace('&nbsp;', ' ', "this is&nbsp;a text"));

看到它在行动

于 2013-03-07T17:31:43.433 回答