Удаление внешних стилей из редактора jQuery WYSIWYG в PHP

У меня проблема с редактором WYSIWYG. Если пользователи копируют внешний текст, это выглядит примерно так:

" p.p1 {поле: 0.0px 0.0px 0.0px 0.0px; шрифт: 11.0px 'Lucida Grande'; минимальная высота: 13.0px} p.p2 {поле: 0.0px 0.0px 0.0px 0.0px; шрифт: 11.0 px 'Lucida Grande'} Только переменные, назначенные в последнем цикле, доступны из-за пределов цикла foreach."

Это явно проблематично.

Кроме того, похоже, есть проблема с разрывами строк, то есть с тегами <br />. Иногда забирают, иногда нет.

Я запускал контент через strip_tags() вот так:

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

Любые мысли о том, что здесь происходит?

Если это поможет, я использую jWYSIWYG для редактора.


person Josh Smith    schedule 31.10.2010    source источник
comment
Пожалуйста, уточните, делаете ли вы что-нибудь с содержимым редактора с помощью jQuery? Если да, пожалуйста, предоставьте подробности   -  person Cez    schedule 03.11.2010
comment
Нет. Содержимое редактора находится внутри iFrame и поэтому совершенно недоступно для jQuery, кроме как через сам редактор jWYSIWYG. Я могу получить доступ к содержимому только через собственные методы getContent и setContent.   -  person Josh Smith    schedule 03.11.2010
comment
Я не уверен, что неправильно вас понял, но вы можете получить доступ к контенту от родителя, например. $('#wysiwyg-frame').contents().find('body #wysiwyg').val(). Вы можете опубликовать код/ссылку?   -  person Cez    schedule 04.11.2010


Ответы (4)


Относительно вашего запроса о 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 />
person Cez    schedule 03.11.2010
comment
Хорошая мысль включить <br/> и <br />. К сожалению, похоже, это ничего не меняет. - person Josh Smith; 03.11.2010

Может быть, использовать preg_replace, например http://ideone.com/VjMZY?

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

Я думаю, что в системе отслеживания проблем для jwysiwg есть комментарии, связанные с очисткой на стороне браузера.

person Bradley Kreider    schedule 09.11.2010

Следующий код, наконец, заставил меня работать:

$('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/.

person Josh Smith    schedule 10.11.2010