DOMNode 오브젝트를 받아 innerHTML을 반환.



/** 인수로 받은 노드의 innerHTML을 반환
* @param object $node          innerHTML을 얻고자 하는 DOMNode
* @param bool    $includeSelf 자기자신의 태그를 포함할 것인지 여부
*
* @return string 추출한 innerHTML
*/

function getInnerHTML($node, $includeSelf=true)
{
    if ($node==null) return null;

    // 자식노드 추출
    $childNodes = $node->childNodes;
    $childNodesCount = $childNodes->length;

    for ($i=0; $i<$childNodesCount; $i++) {
        $item = $childeNodes->item($i);
        if (($item->nodeName=='#text') AND (strlen(trim($item->nodeValue))==0)) continue;
    
        $tmpDoc = new DOMDocument('1.0', 'UTF-8');
        $tmpDoc->appendChild($tmpDoc->importNode($item, true));
        $result .= urldecode($tmpDoc->saveHTML());
        unset($tmpDoc);
    }

    // 자기자신의 태그를 포함
    if ($includeSelf===true) {
        // 시작태그
        $selfTagHead .= "\n<".$node->nodeName;
        foreach ($node->attributes as $k=>$v) $selfTagHead .= " ".$v->name."=\"".$v->value."\"";
        $selfTagHead .= ">\n";

        // 종료태그
        $selfTagTail = "</".$node->nodeName.">\n";
        $result = $selfTagHead.$result.$selfTagTail;
    }

    return html_entity_decode(urldecode($result), ENT_NOQUOTES, 'UTF-8');
}




 
Posted by bloodguy
,