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

Статус
В этой теме нельзя размещать новые ответы.

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;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху