У меня есть этот код

  <?PHP
      $content = '<html>
      <head>
         <title></title>
      </head>
      <body>
         <ul>
            <li style="border:0px" class="list" id="list1111">
            <a href="http://www.example.com/" style="font-size:10px" class="mylinks">
            <img src="logo.gif" width="235" height="97" alt="logo example" border="0"/>
            </a>
            </li>

            <li style="border:0px" class="list" id="list2222">
            <a href="http://www.example.com/2222222" class="mylinks">
            second link
            </a>
            </li>                                 
          </ul>
        </body>
        </html> ';

    $doc = new DOMDocument;
    $doc->loadhtml($content);
    $xpath = new DOMXPath($doc);
    $hrefs = $xpath->evaluate("/html/body//a");
    for ($i = 0; $i < $hrefs->length; $i++) {
            $href = $hrefs->item($i);
            $url = $href->getAttribute('href');                
            echo $url ."<br />";
    }
    ?>

Этот код очень прост, он просто извлекает все теги привязки из HTML-документа. Я нашел его здесь

То, что я хочу, более сложное :)

Я хочу получить все теги привязки + все дочерние и родительские теги и их атрибуты для каждого тега привязки

Например, результат, который я хочу получить, - это получение первого тега привязки примерно так

         1-html 
         2-body 
         3-ul 
         4-li(class:list,id:list1111,style:etc....) 
         5-a(href:www.example.com etc..) 
         6-img(width:257 etc)

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

Для меня это очень сложно из-за "DOMXPath" :( однако для некоторых из вас это может быть легко

У вас есть вопросы?

Ты знаешь как решить эту проблему?

Заранее спасибо

0
ahmed 1 Сен 2009 в 20:48

2 ответа

XPaths должен сделать так, чтобы вам не нужно было повторять. Чтобы получить важные атрибуты li, используйте XPath, например:

//li/@class

Или

//li/@id

Который должен дать вам повторяемый объект, который вы можете использовать.

Вот дополнительная информация о XPath.

1
Jon W 1 Сен 2009 в 21:03
Спасибо, я не ищу только свойства тегов, самое главное, что я ищу, это найти родителей и детей тега «привязки».
 – 
ahmed
1 Сен 2009 в 22:19
Вы можете рассмотреть возможность использования оси «родительский::» и «дочерний::» для выполнения вашей итерации.
 – 
Jon W
3 Сен 2009 в 23:49

Возможно, вам следует написать простую таблицу стилей XSLT. Сопоставьте тег <a>, и тогда ancestor::* предоставит все родительские узлы, child::* предоставит вам все дочерние узлы — у вас будет гораздо больше возможностей, используя простой синтаксис XPath через XSLT.

0
Thiyagaraj 3 Сен 2009 в 01:02