从PHP中的jQuery WYSIWYG编辑器中删除外部样式

时间:2010-10-31 10:42:08

标签: php jquery editor text-editor wysiwyg

我的WYSIWYG编辑器存在问题。如果用户在外部文本中复制,则会出现如下情况:

  

“p.p1 {margin:0.0px 0.0px 0.0px   0.0px;字体:11.0px'Lucida Grande'; min-height:13.0px} p.p2 {margin:   0.0px 0.0px 0.0px 0.0px;字体:11.0px'Lucida Grande'}只有变量   在最后一个循环中分配的是   可以从a。范围之外访问   foreach循环。“

这显然有问题。

最重要的是,换行符似乎也存在问题,即<br />标签。有时他们会被接走,有时候不会接受。

我一直在通过strip_tags()运行内容,如下所示:

<?php
$body = strip_tags($body, '<a><br><b><i><img><ul><ol><li>');

对这里发生了什么有任何想法?

如果有帮助,我正在使用jWYSIWYG作为编辑器。

4 个答案:

答案 0 :(得分:2)

关于 strip_tags()的查询:

php > $str="<br><br/><br />";
php > echo strip_tags($str, "<br>");
<br><br />

是否有可能使用<br/>并被忽略?如果是这样,请将<br/>添加到strip_tags(),例如

php > $str="<br><br/><br />";
php > echo strip_tags($str,'<br><br/>');
<br><br/><br />

答案 1 :(得分:0)

也许使用像http://ideone.com/VjMZY这样的preg_replace?

$str = preg_replace('/<br[^\>]*?>/', '', $str);

答案 2 :(得分:0)

我认为jwysiwg的问题跟踪器有关于浏览器端清理的相关评论。

答案 3 :(得分:0)

以下代码终于让它为我工作了:

$('iframe').ready(function() {
    $(this).contents().find('.wysiwyg').find('iframe').contents()
    .find('.wysiwyg').bind('paste', function() {
        // Completely strips tags.  Taken from Prototype library.
        var el = $(this);
            var strClean = el.text().replace(/<\/?[^>]+>/gi, '');
            el.text(strClean);
        }, 0);
    });
});

您可以在http://jsfiddle.net/v4LhV/3/

看到这一点