该手册解释了为什么:
为了使此功能起作用,您将需要使用DOMElement->setIdAttribute()设置一些ID属性,或者将DTD定义为ID类型的属性。在后一种情况下,在使用此功能之前,您需要使用DOMdocument->validate()或DOMdocument-> validateOnParse来验证文档。
一定要使用有效的HTML并提供DTD。
快速修复:
- 致电
$dom->validate();
并忍受错误(或修复错误),之后您可以使用$dom->getElementById()
,无论出于何种原因出现错误。 - 如果您不想验证,请使用XPath:
$x = new DOMXPath($dom); $el = $x->query("//*[@id='bid']")->item(0); - 想一想:如果 在* 加载HTML 之前 只是将其设置
validateOnParse
为true ,那么也可以使用; P *
。
$dom = new DOMdocument();$html ='<html><body>Hello <b id="bid">World</b>.</body></html>';$dom->validateonParse = true; //<!-- this first$dom->loadHTML($html); //'cause 'load' == 'parse$dom->preserveWhiteSpace = false;$belement = $dom->getElementById("bid");echo $belement->nodevalue;在此处输出“世界”。



