Php html十进制编码字符串

Php html十进制编码字符串,php,Php,我正在使用simplehtmldom_1_5解析网站中的html,当我将解析后的文本回显到屏幕上时,它已正确打印,但当我尝试使用file_put_内容将其保存到文件时,我将字符串编码为html十进制代码: (b. andersson, 我已经尝试了所有可能的utf8编码、utf8解码和htmlentities的组合。。。但什么都没用,当我尝试插入到mysql表时出现了同样的问题。 mb_d

我正在使用simplehtmldom_1_5解析网站中的html,当我将解析后的文本回显到屏幕上时,它已正确打印,但当我尝试使用file_put_内容将其保存到文件时,我将字符串编码为html十进制代码:

(b. andersson,

我已经尝试了所有可能的utf8编码、utf8解码和htmlentities的组合。。。但什么都没用,当我尝试插入到mysql表时出现了同样的问题。 mb_detect_对解析文本的编码返回ASCII。 有什么建议吗

header('Content-Type: text/html; charset=utf-8');
ini_set('max_execution_time', 0);

include 'simplehtmldom_1_5/simple_html_dom.php';
$html = file_get_html($curr_url);
$texts = $html->find('div[id=content_h]');
foreach($texts as $text) {
    file_put_contents('queries.txt', $text->innertext . "\n", FILE_APPEND);
}

您是否也尝试过html_entity_decode()? 这是将实体转换回清除类型文本的函数

*编辑

我只是测试了一下,以验证它是否有效

是的,它可以工作,但是:

你的数据不正确! 每个实体的末尾都缺少一个分号

这就是为什么解码只能在松散的浏览器渲染引擎中工作

您的数据应如下所示:

(b.
而不是像这样

&#40&#98&#46

看到区别了吗

这终于对我起作用了

preg_replace('/&#(\d+)/me',"chr(\\1)", $text)

我添加了一些代码,但这是一个使用简单html的简单html解析。我已经尝试过这个preg_replace('/&&#(\d+)/me',“chr(\\1)”,$text),它对我很有效,当然是的,因为它获取每个实体的ASCII值,并使用PHP函数将其转换回,PHP函数用于将代表数字的ASCII转换回它所代表的字符。无论如何,你的数据似乎不是有效的html实体的列表,因为它们缺少有效的html实体;