PHP简单的HTML DOM标签重叠

时间:2017-03-21 10:31:21

标签: php html dom

我有一个我要解析的页面,它有像这样重叠的标签

 <div>
  <p>
   <strong>
    <span>sometext</span>
     <div> <- this tag is misplaced
   </strong>
  </p>
       <- and should be here
     </div>

问题是需要解析更多的p标签,但解析器认为它已到达终点。

我需要以我可以单独访问每个p的方式进行解析

$ar_w = $ar->find('div[itemprop=ar] p');
    foreach ($ar_w as $para) {
        //something
    }

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的HTML无效。

  • 您无法在<p>内加<p>(但由于<div>的结束标记是可选的,</p>将隐式结束它,然后{{1}将被忽略,因为没有匹配的<p>)。
  • 您无法将<div><strong>
  • 放入其中
  • 如果没有匹配的结束标记,您就不能拥有<div>开始标记

如果要以特定的非标准方式从HTML错误中恢复,则需要编写自定义解析器。预建的往往遵循HTML规则。