Monday, April 11, 2011

getElementsByClassName in PHP DOMDocument

function getElementsByClassName(\DOMDocument $DOMDocument, $ClassName) {
$Elements = $DOMDocument->getElementsByTagName("*");
$Matched = array();

for($i=0;$i<$Elements->length;$i++) {

if($Elements->item($i)->attributes->getNamedItem('class')->nodeValue == $ClassName) {
$Matched[]=$Elements->item($i);
}
}
return $Matched;
}

3 comments:

  1. This will fail on elements with multiple classes

    ReplyDelete
  2. should probably be:

    if(in_array($ClassName, explode(' ', $Elements->item($i)->attributes->getNamedItem('class')->nodeValue))) {

    to work with multiple classes

    ReplyDelete