2008-09-17 20 views
5

मैं एक छोटा templating इंजन पर काम कर रहा हूँ, और मैं पृष्ठों को पार्स करने के लिए DOMDocument का उपयोग कर रहा हूँ PHP DOMDocument। मेरे परीक्षण पृष्ठ अब तक इस तरह दिखता है:एचटीएमएल टैग

<block name="content"> 

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

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

</block> 

और मेरे वर्ग का हिस्सा इस तरह दिखता है:

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; 
} 

मैं इसे जिस तरह से मैं में इच्छानुसार काम कर रहा है कि उस पर प्रत्येक < ब्लॉक > पकड़ लेता है पृष्ठ और मेरे टेम्पलेट में इसकी सामग्री इंजेक्ट करता है, हालांकि, यह < ब्लॉकके भीतर HTML टैग को अलग कर रहा है, इस प्रकार < पी > या < स्पैन > टैग:

this is some rendered PHP! Main column of content 

मैं यहां क्या गलत कर रहा हूं? :) धन्यवाद

उत्तर

9

कुछ भी नहीं: नोड वैल्यू पेड़ के मूल्य भाग का संयोग है, और इसमें कभी टैग नहीं होंगे।

मैं $ नोड के अंतर्गत पेड़ की एक HTML टुकड़ा बनाने के लिए क्या करना होगा क्या यह है:


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

एचटीएमएल "टुकड़े" वास्तव में, अधिक समस्याग्रस्त से आप पहली बार में लगता है कि कर रहे हैं, क्योंकि वे की कमी के लिए करते हैं डॉक्टरेट्स और कैरेक्टर सेट जैसी चीजें, जो डीओएम पेड़ और एचटीएमएल टुकड़ों के हिस्सों के बीच निर्धारित और दृढ़ता से आगे बढ़ती हैं।

संबंधित मुद्दे