PHP, XPath ve / veya DOM ile değişiklik, HTML içeriği [yinelenen]

0 Cevap php

Possible Duplicate:
xPath insert before and after - With DOM and PHP

Ben iyi güzel doğru bir şekilde, bir dize içinde HTML kodu ayrıştırmak gerekiyor.

Wordpress bu gibi görünen bir yapıya sahip bir kenar çubuğu oluşturur.

<div class="sidebar-1">
   <ul>
      <li id="archives">
          <h4>Archives</h4>
          <ul>
             <li>a href="">Test1</a></li>
             <li>a href="">Test2</a></li>
          </ul>
      </li>
      <li id="pages">
          <h4>Archives</h4>
          <ul>
             <li>a href="">Test</a></li>
             <li>a href="">Test</a></li>
          </ul>
      </li>
   </ul>

I want to create a <div class="content"> after </h4> and a </div> before the </li> the parent element, in both list sections "archives" and "pages". It should work if more unknown list items are added.

Sonuç böyle olmalı:

<div class="sidebar-1">
   <ul>
      <li id="archives">
          <h4>Archives</h4>
          <div class="content">
             <ul>
                <li>a href="">Test1</a></li>
                <li>a href="">Test2</a></li>
             </ul>
          </div>
      </li>
      <li id="pages">
          <h4>Archives</h4>
          <div class="content">
             <ul>
                <li>a href="">Test</a></li>
                <li>a href="">Test</a></li>
             </ul>
          </div>
      </li>
   </ul>

Ben bir DOM işlevini yapmaya çalıştı ama ben yaptım ve nasıl bunu yapmak için gerekenleri anlamaya vermedi. Bir dizi h4-etiketleri içinde içeriğini döndürür. Çok yararlı değil.

    function add_sidebar_content($html)
    {
       $dom = new DOMDocument();
       $dom->loadHTML($html);
       $xpath = new DomXPath($dom); 
       $tag = $dom->getElementsByTagName("h4");
       $counter = $tag->length;
       for ($i = 0; $i < $counter; $i++)
       {
          $result = $tag->item($i)->nodeValue;
       }
       return $result;
    }

0 Cevap