【问题标题】:PHP Simple HTML DOM Parser - FIle not being readPHP 简单 HTML DOM 解析器 - 未读取文件
【发布时间】:2012-11-17 10:07:59
【问题描述】:

我编写了一个脚本来处理来自 URL 的 html 文件,但是,由于我的廉价主机提供商的 30 年代脚本运行时限制,我不得不更改脚本以将 html 存储为 txt 文件并从本地 WAMP 服务器。

我正在尝试加载每个文件,提取我需要的内容,然后移至下一个文件。

作为源的 URL file_get_html 完美地完成了这项工作(我可以 -> 找到所需的元素) txt 文件作为源 file_get_html 正在返回一个空白对象。

根据以下帖子中的一些建议,我将file_get_html 更改为file_get_contents,它创建了一个包含文本文件内容的单个大字符串的数组。

首先,确保file_get_contents 可以获取数据。如果可以,file_get_html 将能够将数据加载到simplehtmlDom

如果file_get_contents 返回一个字符串,它确实如此,我将如何“将数据加载到 simplehtml Dom?”

File not getting read using file_get_html

然后我尝试将字符串转换为对象str_get_html,但是这也不起作用。

include('simple_html_dom.php');
$html = file_get_html('file.txt');
var_dump($html);

返回:object(simple_html_dom)[1],但没有其他内容或数组。

include('simple_html_dom.php');
$html = file_get_contents('file.txt');
var_dump($html);

返回:string < ! DOCTYPE html PUBLIC.....

问题

谁能给我任何建议?将包含 html 标记的文本文件加载到对象中的最佳方法是什么,以便我可以在其内容上使用 find 方法。我想避免将文件加载到字符串数组中并使用正则表达式来处理内容。

如果使用本地 WAMP 服务器,我需要考虑什么?

【问题讨论】:

  • 您可以发布您正在尝试阅读的代码和文本文件吗?
  • 在我使用 file_get_contents 打开文件后,我设法使用 str_get_html 修复了它。文本文件实际上是网页的 html 源代码转储,例如 ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> w3.org/1999/xhtml"> .......
  • 完美,效果很好……

标签: php object wamp file-get-contents simple-html-dom


【解决方案1】:

(由 OP 在问题中回答。转换为社区 wiki 答案。请参阅Question with no answers, but issue solved in the comments (or extended in chat)

OP 写道:

我自己设法解决了这个问题。我确定我已经尝试从字符串中提取 html,doh!

include('simple_html_dom.php');
$html = file_get_contents('file.txt');    
$html = str_get_html($html);
var_dump($html)

返回 object(simple_html_dom)[1] 包括所有预期的数组等

我没有尝试使用 file_get_html 直接从源文件创建 html 对象,而是提取了文件内容 file_get_contents 然后使用 str_get_html 将 str 转换为 html,这允许我使用简单的 html dom 方法,例如查找对象内的属性,例如

$html->find('a');

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 2014-01-15
    • 2011-08-27
    • 2018-03-05
    相关资源
    最近更新 更多