マニュアルには、これが発生する理由が説明されていると思います
この関数を機能させるには、DOMElement->setIdAttribute() でいくつかの ID 属性を設定するか、属性を ID 型に定義する DTD を設定する必要があります。後者の場合、この関数を使用する前に、DOMDocument->validate() または DOMDocument->validateOnParse でドキュメントを検証する必要があります。
潜在的な修正:
- を呼び出すと、何らかの理由でエラーに関係なく
$dom->validate();、後で を使用できます。$dom->getElementById()
検証したくない場合は、XPath を使用します。
$x = new DOMXPath($dom);
$el = $x->query("//*[@id='title']")->item(0);// id=title を探す
カスタム DTD の使用例:
$dtd = '<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>';
$systemId = 'data://text/plain;base64,'.base64_encode($dtd);
$creator = new DOMImplementation;
$doctype = $creator->createDocumentType($root, null, $systemId); //Based on your DTD from above