2013-02-13 93 views
0

我试图替换介于pre标签之间的html标签。这就是我想做的事情:标签之间的preg_replace标签

$str = '<pre><div>Get<p>rid</p> of html tags</div></pre>'; 
$str = preg_replace('#(<pre.*?>)/<[^<>]+>/(</pre>)#', '$1$2', $str); 
echo $str; 

应该有,responed预标签

我知道一个事实,“摆脱html标签”中指出,

$str = preg_replace('#(<pre.*?>).*?(</pre>)#', '$1$2', $str); 

作品,但是用空的预标签进行响应。

我只需要删除前标签之间的所有html标签。

回答

3

以下是我会做:

$str = preg_replace_callback("#(<pre[^>]*>).*?</pre>#is",function($m) { 
    return $m[1].strip_tags($m[0])."</pre>"; 
},$str); 
+0

谢谢!我希望我早点来这里,会为我节省5个小时:D – user2067005 2013-02-13 04:20:14

0
$str = '<pre><div>Get<p>rid</p> of html tags</div></pre>'; 
if(preg_match("/<pre>(.+?)<\/pre>/i", $str,$res)) 
{ 
    $str=strip_tags($res[1]); 
} 
echo $str;