Wysiwyg редактор - регулярки для фильтрации

Тема в разделе "Регулярные выражения", создана пользователем LeXiKoN, 15 июл 2013.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. LeXiKoN

    LeXiKoN Постоялец

    Регистр.:
    11 окт 2008
    Сообщения:
    54
    Симпатии:
    8
    Есть простой редактор Wysiwyg... Пожалуйста помогите удалить весь ненужным хлам из кода :(
    На данный момент в php имеется preg_replace
    PHP:
     
    $message 
    preg_replace(
    array(
    // Удаляем теги и контент
    '@<head[^>]*?>.*?</head>@siu',
    '@<style[^>]*?>.*?</style>@siu',
    '@<script[^>]*?.*?</script>@siu',
    '@<object[^>]*?.*?</object>@siu',
    '@<embed[^>]*?.*?</embed>@siu',
    '@<applet[^>]*?.*?</applet>@siu',
    '@<noframes[^>]*?.*?</noframes>@siu',
    '@<noscript[^>]*?.*?</noscript>@siu',
    '@<noembed[^>]*?.*?</noembed>@siu',
    '@<div>[(&nbsp;)\s]{1,}</div>@siu',
    // Add line breaks before & after blocks
    '@<((br)|(hr))@iu',
    '@</?((address)|(blockquote)|(center)|(del))@iu',
    '@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
    '@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
    '@</?((table)|(th)|(td)|(caption))@iu',
    '@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
    '@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
    '@</?((frameset)|(frame)|(iframe))@iu',
    // Remove position, background style atrrubutesiu
    '@(<.*?style.*?)(position:[^;]*?)("|\')@iu',
    '@(<.*?style.*?)(background:[^;]*?)("|\')@iu',
    '@(<.*?style.*?)(position:.*?;)(.*?")@iu',
    '@(<.*?style.*?)(background:.*?;)(.*?")@iu'),
    array(
    ' '' '' '' '' '' '' '' '' '' ',
    "\n\$0""\n\$0""\n\$0""\n\$0""\n\$0""\n\$0",
    "\n\$0""\n\$0""$1$3""$1$3""$1$3""$1$3"),
    $message);
    в JS перед отправкой удаляется пока только script
    Код:
    replaces.replace(/<script[^>]*?>[\s\S]*?<\/script>/g ,'')
    необходимо сделать удаление определенных стилей в атрибуте style="", таких как:
    - position (fixed, absolute)
    - left,
    - top,
    - bottom,
    - right
    , удаление атрибутов class, id
    , а также помогите php preg_replace переписать на js

    Как следующие свойства воспроизвести на js:
    Код:
    '@(<.*?style.*?)(position:[^;]*?)("|\')@iu',
    '@(<.*?style.*?)(background:[^;]*?)("|\')@iu',
    '@(<.*?style.*?)(position:.*?;)(.*?")@iu',
    '@(<.*?style.*?)(background:.*?;)(.*?")@iu'
    Спасибо всем, может кому пригодится:
    Код:
    function ReplaceText(msg_html) {
    var patterns = [
    [/<div>[(&nbsp;)\s]+<\/div>/gi, ''],
    [/<script[^>]*?>[\s\S]*?<\/script>/gi, ''],
    [/<style[^>]*?>[\s\S]*?<\/style>/gi, ''],
    [/<object[^>]*?>[\s\S]*?<\/object>/gi, ''],
    [/<embed[^>]*?>[\s\S]*?<\/embed>/gi, ''],
    [/<noscript[^>]*?>[\s\S]*?<\/noscript>/gi, ''],
    [/<noembed[^>]*?>[\s\S]*?<\/noembed>/gi, ''],
    [/class=[',"]([\w- ])*[",']/gi, ''],
    [/id=[',"]([\w- ])*[",']/gi, ''],
    [/position\:[^;]+;?|background\:[^;]+;?|background-color\:[^;]+;?/gi, '']
    ];
     
    for(var i = 0; i < patterns.length; i++) {
    msg_html = msg_html.replace(patterns[i][0], patterns[i][1]);
    }
     
    return msg_html;
    }
     
Статус темы:
Закрыта.