【问题标题】:Get HTML from file using SIMPLE HTML DOM使用 SIMPLE HTML DOM 从文件中获取 HTML
【发布时间】:2013-07-22 17:58:04
【问题描述】:

这是我的 HTML 的一部分:

<div class="info">
    <ul class="links">
    </ul>
    <h1>TEXT #1</h1>
    <ul class="names">
       <li>
       <img src="images/flags/flag_1.gif" alt="USA"  />
       <h3>TEXT #2</h3>
       </li>
       <li>
       <img src="images/flags/flag_34.gif" alt="CZ název"  />
       <h3>TEXT #3</h3>
       </li>
    </ul>

我正在使用 Simple html DOM praser,我尝试获取这 3 个文本(TEXT #1、TEXT #2、TEXT #3)

我的 PHP 代码尝试:

$html = file_get_html('file.txt'); 
$ret = $html->find('ul[class="links"]');   //nazov filmu


foreach ($ret as $translate) {
    $translate = $translate->innertext;
    }   
    echo "$translate";   

理想的结果应该是:

echo "$translate[0]";  //TEXT #1
echo "$translate[1]";  //TEXT #2
echo "$translate[2]";  //TEXT #3

【问题讨论】:

  • 你为什么不在 JavaScript 中这样做?
  • 我已经在 PHP 中完成了 90%,只是缺少一些类似的东西

标签: php html arrays string dom


【解决方案1】:

我假设“file.txt”指的是上面的 HTML...

在我看来,您的 find('ul[class="links"]') 不包含任何内容(根据示例代码)。您是否尝试选择所有类型的标签?

【讨论】:

  • 你说得对,我第一篇文章中的 HTML 代码是 file.txt 的一部分。我只是不知道如何从 HTML 中选择这样的内容。所以是的,我的 PHP 代码可能完全错误
【解决方案2】:

PHP

$titles = array();
$html = file_get_html('file.txt'); 
$html = $html->ownerDocument;
$lists = $html->getElementsByTagName("ul")
foreach($lists as $list):
    if($list->getAttribute('class') == "links"):
        $list = $list->ownerDocument;
        $h3 = $list->getElementsByTagName('h3');
        
        foreach($h3 as $title)
            $titles->push($title);
    endif;
endforeach;

echo $titles[0];

【讨论】:

  • 感谢您的回答伙伴,但它向我抛出了这个错误:解析错误:语法错误,意外的'数组'(T_ARRAY)
  • @Andurit 试试这个代码(我编辑了我的答案)。自从我编写一些 PHP 内容以来已经有一段时间了,所以我的数组初始化部分错了。现在已经修好了。
  • 嘿,它仍然抛出一些错误:注意:尝试获取非对象的属性致命错误:在非对象上调用成员函数 getElementsByTagName()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 2014-08-22
  • 1970-01-01
相关资源
最近更新 更多