Разбор HTML для возврата правил CSS из идентификаторов и атрибутов классов с помощью PHP - PullRequest
2 голосов
/ 20 октября 2010

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

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

Вопрос в том, как пройти через всю структуру?(Я видел, что, например, DomDocument имеет только getElementByTag или getElementById и не имеет getFirstElement, например)

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

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

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

Спасибо!

Ответы [ 2 ]

3 голосов
/ 20 октября 2010

Вы можете передать звездочку (*) на 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;

?>
2 голосов
/ 20 октября 2010

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

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

...