Синтаксический анализ HTML для возврата правил CSS из идентификаторов и атрибутов классов с помощью PHP


Я ненавижу записывать много правил CSS, а затем вводить в них свои стили, поэтому я хотел бы разработать крошечный php-скрипт, который бы анализировал HTML, который я бы передал ему, а затем возвращал пустые правила CSS.

Я решил использовать DOMDocument PHP.

Вопрос в следующем: как я мог бы пройти через всю структуру? (Я видел, что, например, в DOMDocument есть только getElementByTag или getElementById и, например, нет getFirstelEmEnt)

Я только хочу получить идентификаторы и классы в данном блоке HTML-кода, я бы передал такие вещи, как:

<div id="testId">
    <div class="testClass">
        <span class="message error">hello world</span>
    </div>
</div>

Я только хочу знать, как я мог бы пройти через каждый узел?

Спасибо!

Author: Josh Stodola, 2010-10-20

2 answers

Расширение SimpleXML для PHP может вам помочь. Он отлично работает для навигации по дереву HTML.

Http://www.php.net/manual/en/simplexml.examples-basic.php

 2
Author: Hubert Perron, 2010-10-20 15:32:17

Вы можете передать звездочку (*) в getElementsByTagName чтобы получить все теги, а затем просмотреть их...

<?php

 $nodes = $xml->getElementsByTagName("*");
 $css = "";

 for ($i = 0; $i < $nodes->length; $i ++)
 {
    $node = $nodes->item($i);    
    if ($node->hasAttribute("class")) {
      $css = $css . "." . $node->getAttribute("class") . " { }\n";
    } elseif ($node->hasAttribute("id")) {
      $css = $css . "#" . $node->getAttribute("id") . " { }\n";
    }
 }

 echo $css;

?>
 3
Author: Josh Stodola, 2010-10-20 15:18:51