2012-08-06 108 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);