2014-11-27 2 views
1

Я работаю над функцией, которая получает весь контент файла style.css и возвращает только правила CSS, которые нужны на просматриваемой странице (она также будет кэшироваться, поэтому функция запускается только тогда, когда страница была изменено).Как получить информацию из PHP DOMElement?

Моя проблема заключается в разборе DOM (я никогда не делаю этого раньше с PHP DOM). У меня есть следующая функция, но $ element-> tagname возвращает NULL. Я также хочу проверить атрибут «class» элемента, но я застрял здесь.

function get_rules($html) { 
    $arr = array(); 
    $dom = new DOMDocument(); 
    $dom->loadHTML($html); 
    foreach($dom->getElementsByTagName('*') as $element){ 
     $arr[sizeof($arr)] = $element->tagname; 
    } 
    return array_unique($arr); 
} 

Что я могу сделать? Как я могу получить все имена тегов элементов DOM и класс из HTML?

ответ

1

Потому что tagname должен быть неопределенным индексом, поскольку он должен быть tagName (с верблюжьей шкурой).

function get_rules($html) { 

    $arr = array(); 
    $dom = new DOMDocument(); 
    $dom->loadHTML($html); 
    foreach($dom->getElementsByTagName('*') as $element){ 
     $e = array(); 
     $e['tagName'] = $element->tagName; // tagName not tagname 
     // get all elements attributes 
     foreach($element->attributes as $attr) { 
      $attrs = array(); 
      $attrs['name'] = $attr->nodeName; 
      $attrs['value'] = $attr->nodeValue; 
      $e['attributes'][] = $attrs; 
     } 
     $arr[] = $e; 
    } 
    return $arr; 
} 

Simple Output

+0

Спасибо, это работает отлично! Теперь я могу изменить свой код на свои нужды. :) –

+0

@ BalázsVarga уверенный человек im рад это пролить некоторый свет – Ghost

Смежные вопросы