【问题标题】:Parsing HTML Source to extract Anchor and Link tags href value解析 HTML 源代码以提取 Anchor 和 Link 标签的 href 值
【发布时间】:2011-03-22 20:37:37
【问题描述】:

我正在寻找一些 PHP 中的 HTML Parser,它可以帮助我从 html 源代码中提取 href values

我查看了phpQuery 和它最好的,但它对我的需求来说太过分了,而且需要大量 CPU 来做我不需要的额外工作。

我也查了

$dom = 新的 DomDocument();
$dom->loadHTML($html);

但它在解析HTML5标签时有问题。

有没有更好的library/class 或方法来做到这一点?

【问题讨论】:

  • 您是否仅从锚和链接标签中提取href?在这种情况下,为什么 HTML5 标签会影响您?你看过 DOMXPath 吗?
  • @tandu, loadHTML 实际上是针对 HTML4 进行验证的。尝试使用 HTML5 标记(如 <section>)会导致警告。也就是说,当我测试它时,它似乎确实使标签可查找和可序列化。

标签: php html-parsing


【解决方案1】:

好吧,你可以使用正则表达式来提取数据:

$html = "This is some stuff right here. <a href='index.html'>Check this out!</a> <a href=herp.html>And this is another thing!</a> <a href=\"derp.html\">OH MY GOSH</a>";
preg_match_all('/href=[\'"]?([^\s\>\'"]*)[\'"\>]/', $html, $matches);
$hrefs = ($matches[1] ? $matches[1] : false);
print_r($hrefs);

【讨论】:

  • 非常感谢。我进一步使它不区分大小写并添加了额外的(a|link)+ 用于仅解析它们和空格的异常,这似乎不是完整的解决方案/\s*(a|link)+\s*href=[\'"]?([^\s\&gt;\'"]*)[\'"\&gt;]/i
  • 只是一个警告:这不会验证&lt;a class="whatever" href="mypage.htm"&gt;...&lt;/a&gt;
【解决方案2】:

simplehtmldom 是一个方便的 PHP HTML 解析类

http://simplehtmldom.sourceforge.net/

【讨论】:

    【解决方案3】:

    我用过这个--

    $html = '<a href="http://google.com"><img src="images/a.png" /></a>';
    preg_match('/href="([^\s"]+)/', $html, $match);
    echo '<pre>';
    print_r($match);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多