如何从html字符串中检索html元素开始标记?

时间:2014-09-18 13:41:49

标签: php html regex

我正在尝试从html字符串中检索<h1>开始标记。我想要包含从<h1>的所有内容。

现在我正在尝试这样做,但是它似乎导致了编码问题,因为当我打印生成的$ html utf-8字符显示错误时:

        $dom = new DOMDocument();
        $dom->loadHTML($html);

        //Evaluate Anchor tag in HTML
        $xpath = new DOMXPath($dom);


        $elements = $xpath->evaluate("/html/body//h1");

        for ($i = 0; $i < $elements->length; $i++) {
            print_r($elements->item($i));
        }

        // save html
        $html=$dom->saveHTML();

如何确保它包含>关闭之前的所有内容?

1 个答案:

答案 0 :(得分:1)

不是专家,但我做到了:

<h1( [^>]*(["'].*["'])\1*)?>

这是我的测试: enter image description here

更新1:

<h1\s*>|(.*=['"]*[^'"]*['"]*)>

更新2:

<h1(.+=((['"]+[^'"]*['"]+)|[0-9]+))*\s*>

我建模了应支持h1标签的内容。