Php html十进制编码字符串
我正在使用simplehtmldom_1_5解析网站中的html,当我将解析后的文本回显到屏幕上时,它已正确打印,但当我尝试使用file_put_内容将其保存到文件时,我将字符串编码为html十进制代码: (b. andersson, 我已经尝试了所有可能的utf8编码、utf8解码和htmlentities的组合。。。但什么都没用,当我尝试插入到mysql表时出现了同样的问题。 mb_detect_对解析文本的编码返回ASCII。 有什么建议吗Php html十进制编码字符串,php,Php,我正在使用simplehtmldom_1_5解析网站中的html,当我将解析后的文本回显到屏幕上时,它已正确打印,但当我尝试使用file_put_内容将其保存到文件时,我将字符串编码为html十进制代码: (b. andersson, 我已经尝试了所有可能的utf8编码、utf8解码和htmlentities的组合。。。但什么都没用,当我尝试插入到mysql表时出现了同样的问题。 mb_d
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.
而不是像这样
(b.
看到区别了吗 这终于对我起作用了
preg_replace('/&#(\d+)/me',"chr(\\1)", $text)
我添加了一些代码,但这是一个使用简单html的简单html解析。我已经尝试过这个preg_replace('/&(\d+)/me',“chr(\\1)”,$text),它对我很有效,当然是的,因为它获取每个实体的ASCII值,并使用PHP函数将其转换回,PHP函数用于将代表数字的ASCII转换回它所代表的字符。无论如何,你的数据似乎不是有效的html实体的列表,因为它们缺少有效的html实体;