2008-09-17 26 views
5

Küçük bir şablon motoru üzerinde çalışıyorum ve sayfaları ayrıştırmak için DOMDocument kullanıyorum. Benim Test sayfası şimdiye kadar bu gibi görünür:PHP DOMDocument sıyırma HTML etiketleri

<block name="content"> 

    <?php echo 'this is some rendered PHP! <br />' ?> 

    <p>Main column of <span>content</span></p> 

</block> 

Ve sınıfın parçası gibidir: o her <blok> yakalıyor ettiğim kişi ben istediğim gibi çalışma var

private function parse($tag, $attr = 'name') 
{ 
    $strict = 0; 
    /*** the array to return ***/ 
    $out = array(); 
    if($this->totalBlocks() > 0) 
    { 
     /*** a new dom object ***/ 
     $dom = new domDocument; 
     /*** discard white space ***/ 
     $dom->preserveWhiteSpace = false; 

     /*** load the html into the object ***/ 
     if($strict==1) 
     { 
      $dom->loadXML($this->file_contents); 
     } 
     else 
     { 
      $dom->loadHTML($this->file_contents); 
     } 

     /*** the tag by its tag name ***/ 
     $content = $dom->getElementsByTagname($tag); 

     $i = 0; 
     foreach ($content as $item) 
     { 
      /*** add node value to the out array ***/ 
      $out[$i]['name'] = $item->getAttribute($attr); 
      $out[$i]['value'] = $item->nodeValue; 
      $i++; 
     } 
    } 

    return $out; 
} 

: sayfa ve böylece <p> veya < yayılma > etiketleri olmadan aşağıdaki dönen, <blokta> içinde HTML etiketleri sıyırma edilir, ancak, benim şablonuna 's içeriğini enjekte

Burada ne yapıyorum? :) Teşekkürler

cevap

9

Hiçbir şey: nodeValue ağacın değer bölümünün birleşimidir ve hiçbir zaman etiketleri olmayacaktır. Ben $ düğümünün altında ağacın bir HTML parçasını yapmak için yapacağı şeyi

şudur: Onlar eksikliği eğilimi nedeniyle


$doc = new DOMDocument(); 
foreach($node->childNodes as $child) { 
    $doc->appendChild($doc->importNode($child, true)); 
} 
return $doc->saveHTML(); 

HTML "fragmanları", aslında ilk başta düşünmek istiyorum daha sorunlu deterministik olarak DOM ağacı ve HTML parçalarının bölümleri arasında gidip gelmeyi zorlaştıran doktrinler ve karakter kümeleri gibi şeyler.

İlgili konular