PHP版本的伪后标记

时间:2015-05-13 01:33:22

标签: php html domdocument

我正在开展一个项目,涉及我从互联网上下载的数万个文件。页面的来源(MO政府)没有很好地编写页面。

我正在将页面中的某些元素拉到另一个页面中,以便更好地在我的网站中引用。 以下是一个工作示例:

<div id="intsect">
    <strong>Common law in force--effect on statutes.</strong>
</div>


// PHP CODE
// Load Document
    $doc = new DOMDocument();
// Load File Values
    @$doc->loadHTMLFile("stathtml/" . $file);

// Load the <div id="intsect"></div> value
    $genAssem = $doc->getElementById("intsect");
// Appropriate value
    $genAssem = "&nbsp;&nbsp;&nbsp;&nbsp;<b>Statute Name: </b>" . $genAssem->textContent . "<br><br>";

# VALUE (example)
    Statute Name: Common law in force--effect on statutes.

以下是杀死我的部分:

<div id="intsect">
    <strong>Common law in force--effect on statutes.</strong>
</div>

<!-- THIS PART -->
<p> 1.035.  Whenever the word "voter" is used in the laws of this state it shall mean registered voter, or legal voter.

程序员没有给它一个ID或一个类。我需要提取#intsect后面的段落标记。 是否有可以在<p></p>之后选择#intsect代码的PHP选择器?

1 个答案:

答案 0 :(得分:2)

您可以使用xpath定位<p>标记,该标记的前导兄弟div的ID为intsect

$doc = new DOMDocument;
@$doc->loadHTMLFile("stathtml/" . $file);
$xpath = new DOMXpath($doc);
$p = $xpath->query('//p[preceding-sibling::div[@id="intsect"]]');
if($p->length > 0) {
    echo $p->item(0)->nodeValue;
}

Sample Output