PHP Simple Html Dom从一个类

时间:2018-05-19 15:44:32

标签: php xml simple-html-dom

我是一个使用简单的html dom与php的新手,我正在努力从一个类中提取多个html标签。我在一个页面中有多个这样的html块

    <div class="file-right"> 
         <a href="/secrets-of-the-millionaire-mind-tomocubcom-e17682584.html" class="ai-similar" data-id="17682584" data-loc="3">
           <h2><b>Secrets</b> of the <b>Millionaire</b> <b>Mind</b> - TOMOCUB.COM</h2>
         </a>
           <span class="fi-pagecount">223 Pages</span>
           <span class="fi-year">2005</span>
           <span class="fi-size hidemobile">1015 KB</span>
         </div>
     2 - <b>Secrets</b> of the <b>Millionaire</b> <b>Mind</b> and your achievement of <b>success</b>. As you’ve probably fo&nbsp;...
   </div> 

并从每个块我要提取的这个HTML

  1. href link
  2. 标签中的纯文字
  3. 3 span的每个元素文本
  4. 我一直在用php做这件事,但一次又一次地出错。这是我现在最后的代码

    $html = @str_get_html($response);
    $allblocks=$html->find('div.file-right'); //this selects all file-right blocks
    if(isset($allblocks)){
       foreach($allblocks as $singleblock){
          echo $singleblock->plaintext; // but i get an error here PHP Notice:  Array to string conversion
    
       }
    }
    

    任何人都可以帮助我。

1 个答案:

答案 0 :(得分:1)

您需要建立各个层次的HTML,您首先找到<div>标记。您可以在此<a>中找到<div>标记,然后获取href属性(使用->href)。此代码假定只有一个<a>标记,而不是foreach我只是说使用第一个(使用[0])。

<span>代码是一个类似的过程,但由于有重复的元素,这次它使用foreach。此代码输出class属性和span的内容。

$html = str_get_html($response);
$allblocks=$html->find('div.file-right'); //this selects all file-right blocks
if ( count($allblocks) > 0 ){
    foreach ( $allblocks as $block )    {
        $anchor = $block->find("a");
        echo "href=".$anchor[0]->href.PHP_EOL;
        echo "text=".$anchor[0]->plaintext.PHP_EOL;
        $spans = $block->find("span");
        foreach ( $spans as $span ) {
            echo "span=".$span->class."=".$span->plaintext.PHP_EOL;
        }
    }
}

请注意,在原始代码中,您使用isset($allblocks)作为设置值之前的行 - 即使它没有找到任何内容,它仍然会有值。在此代码中,我使用count()检查上次调用find()是否返回任何内容。

使用示例HTML,仅包含在最小页面中,输出为...

href=/secrets-of-the-millionaire-mind-tomocubcom-e17682584.html
text=            Secrets of the Millionaire Mind - TOMOCUB.COM          
span=fi-pagecount=223 Pages 
span=fi-year=2005 
span=fi-size hidemobile=1015 KB