【问题标题】:regex cleaning html textarea content except for some attributes正则表达式清理 html textarea 内容,除了一些属性
【发布时间】:2013-07-12 10:22:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: php regex textarea


    【解决方案1】:

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

    类似的东西应该可以工作:

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

    【讨论】:

    • 您好,谢谢。您似乎忘记了路径和回调 fn 之间的逗号。顺便说一句,它对我不起作用。你试过了吗?
    • 对不起,我指的是模式,而不是路径
    • 我没有。我刚刚使用您的模式编辑了 php 手册中的示例。我会尽快检查我的答案。
    猜你喜欢
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多