2012-08-02 59 views
-1

我需要計算的結束標記爲下面的代碼PHP - 閉塞端DIV標籤

<div class="emph"><div class="level"> Some testing </div></div> 

在這方面,我需要找到父DIV正確的標籤。我的目標是在關閉DIV之前添加類名稱,如下所示

<div class="emph"><div class="level"> Some testing <!--level--></div><!--emph--></div> 

爲此,我需要找到確切的關閉Parent DIV。

是否可以在PHP中實現?

+0

你爲什麼要這樣做?評論應該幫助註釋源代碼而不是呈現給瀏覽器的輸出。 – Flash 2012-08-02 10:28:42

+0

夥計們,那是我的要求。一旦我們能夠實現它,我們正在進行一些處理。所以我想要的是找到確切的收盤股利。在這裏我只是添加了一個例子的評論。 – Rockstar 2012-08-02 10:31:10

回答

1

您可以使用simpleXML(或任何其他XML類) - 對於每個div元素,讀取它的類並追加到節點內容的末尾。它不完全找到結束標籤,但達到了您的指定目標。

示例代碼:

$dom = new DOMDocument; 
$dom->loadXML($xml); 
$divs = $dom->getElementsByTagName('div'); 
foreach ($divs as $div) { 
    if ($div->getAttribute('class')!='') { 
     $div->nodeValue = $div->nodeValue.'<!--'.$div->getAttribute('class').'-->'; 
    } 
} 
echo $dom->saveXML(); 
+0

非常感謝您的快速響應。但我無法獲得像這樣的目標

Some testing
Rockstar 2012-08-02 10:42:22

+0

確切的問題是什麼?當然,除了這個事實,它期望有效的XML。 – jderda 2012-08-02 11:04:14

0

雖然打印在PHP中divs保持一個數組$div_array = array()
只要你打開一個div做:

array_push($div_array, 'emph'); // or 'level' depending on the classname 

只要你準備好打印結束標籤,請求最後一個div的值:

array_pop($div_array); 

// for example 
echo '<!-- '.array_pop($div_array).' -->'; 

彈出數組還會刪除數組的最後一項。這是你想要的,我猜想。

+0

哥們,謝謝你的回覆..你能告訴我怎麼打印嗎.. ..我沒有明白這裏的意思.. – Rockstar 2012-08-02 11:03:50

+0

也許'echo'-ing是更合適的方式來放置它,而不是'print'。 – 2012-08-02 11:05:16