解决simple_html_dom 使用innertext抓取文章,\n换行符丢失问题 保留code换行符


上一篇文章写了如何在Laravel中使用simple_html_dom爬取文章,在实际使用中遇到了一个问题。

问题

在使用innertext获取正文内容时,\n 标签被自动删除,尤其是获取pre中code,爬过来文章一片混乱。

解决方案

首先确定原文中确实是存在\n标签的,然后我看了一下 file_get_html 的源码。
在 file_get_html 的源码调用中,有一个$stripRN参数,默认$stripRN=true,是用来控制是否删除 \n 标签的,把这个参数的默认值改成 false ,问题解决。

部分源码:

function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
{
    // We DO force the tags to be terminated.
    $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText);

本文发表于2018年09月19日 20:42
阅读 3295 讨论 2 喜欢 3

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1