Preg替换删除在同一标记之间选择的文本

时间:2014-05-02 10:08:38

标签: php regex

例如,我有这个标签

<font color="#6f6f6f">hahahahahahahaha</font>
<font color="#6f6f6f">ABC DEFG</font>
<font size="-1" class="p">blablablababababaab</font>

如何使用preg替换删除<font color="#6f6f6f">ABC DEFG</font>

我试过这样的话。但它删除所有字体标记

preg_replace('#(<font.*?>).*?(</font>)#', '', $desc);

2 个答案:

答案 0 :(得分:1)

$desc='<font color="#6f6f6f">hahahahahahahaha</font>
<font color="#6f6f6f">ABC DEFG</font>
<font size="-1" class="p">blablablababababaab</font>';

preg_match_all('#<font.*?>.*?</font>#',$desc,$match);

unset($match[0][1]);

print_r($match);

然后再将其转换为字符串,再次(内爆)。

答案 1 :(得分:0)

我同意amal str_replac更好

$string= '<font size="-1" class="p">blablablababababaab</font><font color="#6f6f6f">ABC DEFG</font>
<font size="-1" class="p">blablablababababaab</font>';

str_replace('<font size="-1" class="p">blablablababababaab</font>', '', $string);