获取带有类名的HTML标记

时间:2016-02-20 11:31:25

标签: php regex

我想在数组中获取所有带有类名的html标签。 喜欢

< a class="abc"></a>, < h2 class="xyz"> </h2>

我希望数组中有<a>abc以及<h2>xyz。我无法找到任何逻辑来得到它。我正在尝试preg_replacepreg_replace_all,但无法获得任何解决方案。

1 个答案:

答案 0 :(得分:0)

有人聪明曾经说过你不应该自己过滤掉dom,与正则表达式的熟练程度无关紧要......所以不要这样做。

无论如何:

$html = 'Foobar <a href="link" class="abc" style="sda">anchor</a>,space <h2 class="xyz">heading</h2>text betewwn <a href="foo">anchor 2</a>';
preg_match_all('|<a[^>]*(?:class=["'."'".']([^"'."'".']*)["'."'".'])[^>]*>(.*?)<\/a>|sim', $html, $matches);
var_dump($matches);

// Output: 
array(3) {
  [0] =>
  array(1) {
    [0] =>
    string(49) "<a href="link" class="abc" style="sda">anchor</a>"
  }
  [1] =>
  array(1) {
    [0] =>
    string(3) "abc"
  }
  [2] =>
  array(1) {
    [0] =>
    string(6) "anchor"
  }
}

这将找到所有带有类的标签。