使用 PHP 简单 HTML DOM 解析器进行抓取

scraping using PHP Simple HTML DOM Parser

我想使用 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>

不是直接将 "Details. (Lob., Co v.)" 放在

中,而是使用 来放置。 当我使用此代码时

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

我发现 "Details. (Lob.," 它在找到 < i > 或 < font > 时停止。 如何提取整行 "Details. (Lob., Co v.)"

感谢您的回答

您可以使用strip_tags()函数来删除不需要的标签。删除不必要的标签后,您可以使用 DOM 解析器。

The strip_tags() function strips a string from HTML, XML, and PHP tags.

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>