获取<h3>标签</h3>内的锚点的href

时间:2014-01-20 17:08:20

标签: php html regex

这是html,

<html>
<head></head>
<body>
<h3 class="abc">
<a href="abc.html">link1</a>
</h3>
<h2 class="abc">
<a href="xyz.html">link1</a>
</h2>
</body>
</html>

我想要一个php正则表达式或其他任何东西,以获得锚点的href,例如“abc.html”里面只有h3标签,而不是h2标签。

提前致谢,

3 个答案:

答案 0 :(得分:2)

如果您使用JQuery,则可以使用

<script>
  $("h3 a").attr("href");
</script>

答案 1 :(得分:1)

试试这个正则表达式:

#<h3[^>]+>\s+<a\s+href="([^"]+)">.+?</a>\s+</h3>#

演示

http://regex101.com/r/xK4pT3

答案 2 :(得分:1)

你最好使用DOMDocument,这是一个真正的HTML解析器。我没有对此进行过测试,但这可能是你应该采取的方法:

$dom = new DOMDocument;
$dom->loadHTML($html);
$h3s = $dom->getElementsByTagName('h3');

$anchors = array();
foreach($h3s as $h3){
   $links = $h3->getElementsByTagName('a');
   foreach($links as $link){
      $anchors[] = $link->getAttribute('href');
   }
}
print_r($anchors); //should have all of your `href`s

通常,尽量不要使用Regex来解析HTML ...和read up on DomDocument