[PHP-users 30412] Re: getElementByIdを使って特定要素のテキストノード取得
yusuke ito
ito.ysk @ gmail.com
2006年 9月 22日 (金) 19:50:07 JST
伊東です。
http://jp.php.net/manual/ja/function.dom-domdocument-getelementbyid.php
のUser Contributed Notesに「DOMDocument->getElementById()は期待した結果を返さない」と書かれてますね。
で、代替のグローバル関数を提示してくれています。この関数は期待したとおりに動き、DOMElementオブジェクトを返してくれます
以下転載:
function getElementById(DOMDocument $doc, /*string*/ $id,
DOMNode $node = NULL) {
if ($node === NULL) return getElementById($doc, $id, $doc->documentElement);
$children = $node->childNodes;
for ($i = 0; $i < $children->length; ++$i) {
$elem = $children->item($i);
if (!($elem instanceof DOMElement)) continue;
if ($elem->getAttribute('id') == $id) return $elem;
$ret = getElementById($doc, $id, $elem);
if ($ret !== NULL) return $ret;
}
return NULL;
}
06/09/22 に Masuda<macindows @ forest.ocn.ne.jp> さんは書きました:
> http://www.php.net/manual/ja/function.dom-domdocument-getelementbyid.php
> こちらのgetElementByIDのマニュアルを参考に、
>
> echo $doc->getElementById('title')->tagName;
> echo $doc->getElementById('title')->nodeValue;
>
> を試みているのですが、何も返されない状態です。
PHP-users メーリングリストの案内