2012-08-06 113 views
0

我需要替換一些文本。 爲此,我需要一個正則表達式模式。這裏的文字是:在php中替換嵌套標記中的文本

<div CLASS="CHAP_BM_CON">Outer <div CLASS="CHAP_BM_FIRST">DIV inner</div> 
Outer ends here</div><div CLASS="CHAP_BM_FIRST">Separate DIV Even inner</div> 

在上面的段落,我們可以看到一個嵌套的DIV。我需要EXP章圖案以滿足下面的輸出是這樣的:

<div CLASS="CHAP_BM_CON">Outer <div CLASS="CHAP_BM_FIRST">DIV inner <!--CHAP_BM_FIRST--></div> 
Outer ends here<!--CHAP_BM_CON--></div><div CLASS="CHAP_BM_FIRST">Separate DIV Even  inner<!--CHAP_BM_FIRST--></div> 

我們怎麼能寫出這種情況下,正則表達式?

+0

那你試試? – Oussama 2012-08-06 10:55:34

回答

0

我嘗試下面的代碼..

<?php 
function parseTagsRecursive($input) 
{ 

$regex = '/<div tagname="(.*?)" (.*?)>(.*?)<\/div>/si';  
if (is_array($input)) { 

    $input = '<div tagname='.$input[1].' '.$input[2].'>'.$input[3].'<!--'.$input[1].'--></div>'; 

} 

return preg_replace_callback($regex, 'parseTagsRecursive', $input); 

} 

$content = '<div CLASS="CHAP_BM_CON">Outer <div CLASS="CHAP_BM_FIRST">DIV inner</div> 
Outer ends here</div><div CLASS="CHAP_BM_FIRST">Separate DIV Even inner</div'; 


echo $ver = parseTagsRecursive($content);