使用HTML代码获取第一级dom元素

时间:2018-04-15 13:42:52

标签: php

我在变量中有HTML DOM,我需要将所有第一级子节点以相同的顺序分离到数组中。例如,我有:

1.7.0

我需要这个结果:

<h1>Indice</h1>
<p class="l3"><a href="#c1" class="ddb1a">I. El Censo</a></p>
<p class="l3"><a href="#c2" class="ddb1a">II. Leyes diversas</a></p>
<p class="l3">
    <a href="#c3" class="ddb1a">III. Ofrenda de los Jefes y consagración de los levitas</a>
</p>

注意:

请注意,我不能信任New Lines这样做,因为有些孩子可能会使用新行,例如第3 array ( '<h1>Indice</h1>', '<p class="l3"><a href="#c1" class="ddb1a">I. El Censo</a></p>', '<p class="l3"><a href="#c2" class="ddb1a">II. Leyes diversas</a></p>', '<p class="l3"> <a href="#c3" class="ddb1a">III. Ofrenda de los Jefes y consagración de los levitas</a> </p>' ); 页的a标记。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用DOMDocument来解析HTML并获取所需的标记。

以下是一些符合您所描述内容的代码......

<?php

// Your HTML you provided
$html = <<<HTML
<h1>Indice</h1>
<p class="l3"><a href="#c1" class="ddb1a">I. El Censo</a></p>
<p class="l3"><a href="#c2" class="ddb1a">II. Leyes diversas</a></p>
<p class="l3">
    <a href="#c3" class="ddb1a">III. Ofrenda de los Jefes y consagración de los levitas</a>
</p>
HTML;

// Create a DOM document
$dom = new DOMDocument ();

// Load the HTML
$dom->loadHTML ($html);

// Get the <body> tag
$bodys = $dom->getElementsByTagName ('body');
$body = $bodys->item (0);

// The HTML array you want
$html_array = array ();

// Run through each tag, and convert them to HTML strings
foreach ($body->childNodes as $child) {
    if ($child instanceof DOMElement) {
        $html_array[] = $dom->saveHTML ($child);
    }
}

// And lastly, display the array
print_r ($html_array);