使用PHP简单的HTML DOM解析器进行报废

时间:2017-01-23 20:52:16

标签: php html5 dom web-scraping html-parsing

我想使用PHP简单的HTML DOM解析器从网站上刮掉。 源代码是如此随机:

      <font face="Arial" color="#ff0000">
      <p>Parameters</p>
      </font><font face="Arial" size="2" color="#ff0000">
      <p>Param1</p>
      </font><font face="Arial" size="2" color="#0000ff">
      <p>Details. (Lob., </font><i><font face="Arial"
      size="2" color="#ff0000">Co v</font><font face="Arial" size="2"
      color="#0000ff">.)</p>

而不是将“详情。(Lob。,Co v。)”直接放在&lt; p为H. &LT; / p为H. ,它使用&lt;字体&GT;和&lt;我取代。 当我使用这段代码时

foreach($html->find('p') as $p) 
{
  echo $p->plaintext.'<br>';
}

我发现“详情。(Lob。,”它在找到&lt; i&gt;或&lt; font&gt;时停止。 如何提取整行“详细信息。(Lob。,Co v。)”

感谢您的回答

1 个答案:

答案 0 :(得分:1)

您可以使用 strip_tags()功能删除不必要的标记。删除不必要的标签后,您可以使用DOM解析器。

  

strip_tags()函数从HTML,XML和PHP中删除一个字符串   标签

     

string strip_tags(string $ str [,string $ allowable_tags])

您可以在php.net

上阅读有关strip_tags()函数的更多信息

示例:

$html = '<font face="Arial" color="#ff0000">
    <p>Parameters</p>
    </font><font face="Arial" size="2" color="#ff0000">
    <p>Param1</p>
    </font><font face="Arial" size="2" color="#0000ff">
    <p>Details. (Lob., </font><i><font face="Arial"
    size="2" color="#ff0000">Co v</font><font face="Arial" size="2"
    color="#0000ff">.)</p>';

$html = strip_tags($string, '<p>');
echo $html;

<强>结果:

  <p>Parameters</p>

  <p>Param1</p>

  <p>Details. (Lob., Co v.)</p>