正则表达式清除html textarea内容除了一些属性

时间:2013-07-12 10:22:30

标签: php regex textarea

通常网站用户从Word或其他文件中复制和粘贴文本,我在PHP中使用这行代码来清理用户在文本区域中键入的文本内容:

$text= preg_replace('/style=\"[^\"]*/', '', $text); 

该行删除了html标签中的所有样式,而不删除标签本身,因此我可以通过我的CSS文件以适当的方式设置它们。 现在我需要保持style="background:#99ff99;"有效 这是我自己添加到文本中的一种风格 在清理所有标签时,如何告诉正则表达式不考虑background:#99ff99? 非常感谢任何帮助 谢谢

1 个答案:

答案 0 :(得分:0)

一种解决方案可能包括使用preg_replace_callback($pattern,$callback,$subject,...)

这样的事情应该有效:

$text = preg_replace_callback(
    '/style=\"[^\"]*/',
    function ($matches) {
        return ($matches[0] == 'style="background:#99ff99;"'?$matches[0]:'');
    },
    $text
);