我需要更换一些文字。 为此,我需要一个正则表达式模式。这里的文字是:
<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。我需要reg 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 :(得分: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);