PHP 简单 Html Dom 从一个标签中提取多个标签 class

PHP Simple Html Dom extract multiple tags from one class

我是一个使用简单 html dom 和 php 的新手,我正在努力从一个 class 中提取多个 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 个跨度的元素文本中的每一个

我在 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

   }
}

谁能帮帮我。

您需要构建将 HTML 分开的各个层,您首先要找到 <div> 标签。您可以从中找到 <div> 中的 <a> 标记,然后获取 href 属性(使用 ->href)。这段代码假设只有一个 <a> 标签,所以我只是说使用第一个标签(使用 [0])而不是 foreach

<span>标签也是类似的过程,但是由于有重复的元素,所以这次使用了foreach。此代码输出 class 属性和范围的内容。

$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