使用PHP解析HTML并使用循环获取值


Parsing HTML with PHP and get values by using cycle

我有类似的HTML结构

 <div class = article-comments>
  <div class="article-comment">
     <div class="article-comment-header">...</div>
     <div class="article-comment-content">...</div>
  </div>
  <div class="article-comment">
     <div class="article-comment-header">...</div>
     <div class="article-comment-content">...</div>
  </div>
</div>
.
.
.
</div>

我有一个div元素-comments,它包含许多其他div元素-comment。我需要得到header元素,它包含注释创建者名称,以及*content,它包含评论。我有这样的PHP代码:

foreach($bot->parseBetweenRegexArray($data, '<div.*class="article-comment-content">', '<'/div>') as $commentary ){ 
   printf("comment: %s",$commentary); 
foreach($bot->parseBetweenRegexArray($data, '<div.*class="article-comment-header">', '<'/div>') as $name)  {
   printf("name: %s",$name); '<br />';
                            }
 }

但用这个代码我无法获得正确的顺序,比如评论作者的名字和相应的评论等等。如何做到这一点?

谢谢!

如果您不喜欢使用DOM(也不想将Regex与HTML一起使用),可以尝试用<div class="article-comment-header">字符串explode HTML文本。

结果数组的第一个元素(索引0)将是无用的(它都在第一个<div>之前,所以从第二个(索引1)开始循环。

然后用</div>分解第二个元素。第二个数组的第一个元素就是标头。

然后做一些类似的事情来找到作者。

提示:PHP explode()函数提供了额外的参数$limit,允许您仅将文本分隔为两部分。

我同意这不是最好的解决方案,但我认为很简单。我宁愿使用一些XML类来找到它。