раздел - Мусор НАГУАЛИЗМ
Страницы: 3 ... 54 55 

Автор
Тема:  Сброс из темы 'Форум'
Temus
написано:26-02-2003 19:05:29
31

Pipa
Классики нас учат, что всё, что не является необходимым, является лишним. Вот в email-рассылках вообще никакого html нет, и все только рады. Единственное - нужно как-то цитаты отделять, поэтому принято выделять их скобками, а почтовик сам подсвечивает этот текст. Итак, для цитат нам необходим тэг [i] как минимально необходимый. Для выделения ников тэг [b], и, чтобы не загромождать текст ссылками, тэг [url].
sergejh
Вырезай всё, что начинается и заканчивается угловой скобкой.

ц и т а т а

dt
написано:26-02-2003 23:33:42
32

sergejh
На новый формат списка тем форума взглянул?
Конечно. Под версию 3.0 специально и писал :)

Автором, насколько я помню, является dt
Поиск для форума на soznan.al.ru писал xor, я к нему не имею никакого отношения :)
Кстати чтобы не было глюков надо делать хотя бы минимальную "защиту от дурака" - чтобы если, например, поиск не может найти какой-то файл темы, он не вылетал с ошибкой, а пропускал ее и переходил к следующей.

как вырезать из тега выражение вида: class="..."?
Вырезать можно все что угодно и откуда угодно, regexp'ы в перле - штука могучая, хотя и весьма мутная для понимания :)
$link=~s/@^lt;.*?(class="[^\s]+?").*?@^gt;//g;
- и из всех тегов в строке $link исчезают выражения вида 'class="..."' :)

ЗЫ: "Хороший moderator закрывает плохие темы. Плохой - хорошие. Если moderator закрывает все темы подряд, то это administrator." :)))

<font size="1" color="#CCCCCC">Исправлено: 26-02-2003 23:34:48</font>

ц и т а т а

Pipa
написано:27-02-2003 00:37:03
33

Поскольку sergejh решил, что модераторы разделов могут писать сообщения только в "свои" разделы (при попытке написать в "чужой" раздел выдается сообщение "Вы не имеете доступа к этому разделу!"), то вынуждена завести себе второй ник - Pipa2, не обладающей модераторскими полномочиями, а следовательно позволяющей мне и далее участвовать в форуме в других разделах.
Однако, поскольку новый мой ник, согласно "новому порядку" вступит в действие только после санкции sergejh'а, то публикую ответ sergejh'у здесь. Благо что к мусорный раздел писать я еще могу.

ц и т а т а

Pipa
написано:27-02-2003 00:37:52
34

sergejh: как узнать, соответствует именно этому закрытому тегу начало тега или он "пустой"

Гм... Подумать надо! :-)))

sergejh: как вырезать из тега выражение вида: class="..."? Ведь можно написать его через любое количество пробелов. Писать огромный парсер на каждый элемент?

А зачем тебе понадобилось вырезать это вполне безобидное слово? Не class надо вырезать, а, например, style!
Впрочем, думаю, убивать параметры вполне можно скопом. Благо они имеют одинаковую конструкцию - имя, знак равенства, выражение. Полагаю, что для безопасности будет вполне достаточным разрушить имя со знаком равенства, остальное же скорее всего видно не будет.
Например так:
s/(stylе|оnMоuseOvеr).*?=//g
Здесь через символ | можно написать большущий список нежелательных элементов. Все они будут вырезаться "с мясом" (т.е. до знака равенства, включая его).
Вариант, предложенный dt, плох только тем, что двойные кавычки - необязательный элемент для MSIE, в этом легко убедиться, вспомнив частоиспользуемое на форуме выражение class=themes. Кроме того, он с апетитом кушает и одинарные кавычки - апострофы. Главная тут сложность - определиться чем может заканчиваться значение class. Впрочем, если задача стоит так, что тебе надо вырезать class не в сообщении пользователя, а в формах, которые генерировались скриптом и про которые с уверенностью можно сказать, что значение класса заключено в двойные кавычки, тогда да...

Могу предложить убивать на месте все теги, содержащие "вредные параметры", например, вот так:
s/@^lt;(sсriрt|dеl|stylе|аррlеt|оbjеct|pаrаm|form)(?:.|\s)*?@^lt;\/\1@^gt;//goi

sergejh: что значит не выводить на главную страницу содержимое тегов ВООБЩЕ? Если человек написал что-то, состоящее из сообщения целиком внутри тега, выводить пустую ячейку чтоли?

Под выражением "содержимое тега" имела ввиду его контекст внутри угловых скобок, а не область действия инструкции тега. Очевидно, что текст, находящийся в области действия тега сам по себе никогда не находится в угловых скобках.
Например:
Тра-та-та @^lt;b@^gt;sergejh@^lt;/b@^gt; тра-та-та...
Убивание тегов приведет к исчезновению всего содержимого внутри угловых скобок вместе с ними. Т.е. будет эквивалентно изъятию тегов из документа. При этом остальная текстовка не пропадет. В данном примере получим:
Тра-та-та sergejh тра-та-та...
По простому изъять все теги для публикации на первой странице можно так:
s/@^lt;.*?@^gt//g
-
P.S. "Живьем" работоспособность предлагаемых выражений не проверяла. Привожу в порядке дискуссии.
P.P.S. Приведенные в тексте регулярные выражения модифицированы русскими буквами так, чтобы пройти фильтрацию. Их ни в коем случае нельзя копировать из этого текста для использования в скрипте.
----
Pipa

<font size="1" color="#CCCCCC">Исправлено: 27-02-2003 00:39:11</font>

ц и т а т а

Скалли
написано:27-02-2003 15:11:33
35

СЕРГЕИЧ!!!!

а шрифты то не ахти...
буквеся др. на др. налазят на титульной странице...

ц и т а т а

sergejh
написано:27-02-2003 15:53:58
36

Pipa
<FONT SIZE=2 COLOR=#0033CC>Поскольку sergejh решил, что модераторы разделов могут писать сообщения только в "свои" разделы... </FONT>

Это опечатка в скрипте была... :)
Уф... Еле перетащил сюда эти сообщения...
Про скрипты - почитал.

ц и т а т а

AesirLoki
написано:27-02-2003 17:12:03
37

sergejh
А зачем опять разбанил-то? Тем более теперь у тебя специальное место есть, куда таких вот хреновых юзверей складывать =8-0

И вот еще? Верни бордюрчики у полей ввода! Без них - уродство какое-то.

ц и т а т а

sergejh
написано:27-02-2003 17:25:22
38

AesirLoki
<FONT SIZE=2 COLOR=#0033CC>А зачем опять разбанил-то?</FONT>

Я ж правила переписал. Вот он их вроде пока старается не нарушать. :) "Специальным местом" я еще успею попользоваться тут вдоволь. :)

А без бордюрчиков - так красивее. Стиль такой. :)

ц и т а т а

AesirLoki
написано:27-02-2003 17:36:54
39

<FONT SIZE=2 COLOR=#0033CC>А без бордюрчиков - так красивее. Стиль такой. :)</FONT>
А мне не нравится. Тут цветное поле, там цветное поле... куда писАть? 3D-border - всеж полезная зело вещь.

ц и т а т а

sergejh
написано:27-02-2003 18:04:45
40

Итак, положения по тегам (так сказать, планы):

-перечень разрешенных тегов (оставим html)
-вырезать все остальные (оставляя, что между ними)
-замена "опасных" выражений вида ОnMouse...
-на главной стр. форума - показывать всё, кроме тегов (т.е. то что между ними)
-установить для тега @^lt;a hrеf=@^gt; единый класс (игнорирование, если есть еще что-то кроме @^lt;а hrеf=@^gt;)

Кто согласен, кто не согласен. Может, еще что забыл.

<font size="1" color="#CCCCCC">Исправлено: 27-02-2003 18:06:06</font>

ц и т а т а

dt
написано:27-02-2003 23:07:55
41

sergejh
Тот regexp, который я вчера дал не работает :) Пришлось немного поломать голову, в результате получилось нечто вроде такого:


$link=~s/@^lt;(.+?)@^gt;/'@^lt;'.suxx($1).'@^gt;'/eg;

(...)

sub suxx {
my $h=$_[0];
$h=~s/(class|style|оn[^\s]+?)=[^\s]+//ig; #class, style, события оnXXX в пролете, по желанию можно добавить еще ;)
$h=~s/\s+/ /g; #чтобы было красиво
$h=~s/(^\s)|(\s$)//; #и еще красивше :)
return($h);}

ц и т а т а

Pipa
написано:28-02-2003 13:50:06
42

Мои аплодисменты dt!
Сама не знала, что в регулярное выражение можно засунуть вызов функции :-) Впрочем подобные "украшательства" внутри тега (!), на мой взгляд совершенно излишни. Т.е. вполне можно было бы свободно обойтись без внешней функции. А впрочем, пусть остается - может понадобиться еще для каких дополнительных проверок или подмен в будущем. Хотя функцию ту я бы переписала в более быстром варианте:


sub suxx {
$_=shift;
s/(class|style|оn[^\s]+?)=[^\s]+//ig;
s/\s+/ /g;
s/(^\s)|(\s$)//;
return $_; }






sergejh

А ты аплодисментов не жди! :-)))
Во первых, не прозевай, что в скрипте dt, не смотря на оформление в тегом @^lt;pre@^gt; в словечке "оn" первая буква оказалась подменена на русскую! И это несмотря на то, что я достала его текст не копированием из окна (тут это было бы вполне допустимым), а из окна редактирования. Уже 3-ый раз напоминаю и НАСТАИВАЮ, чтобы все редактирования, подмены и украшательства делались в момент вставки сообщения в html-страничку, а не на "сыром" сообщении пользователя, которое он вправе потребовать на повторное редактирование в том же виде, в котором отправлял!
То, во что превратилось мое предыдущее сообщение при его вызове на редактирование - нельзя даже пером описать :-). Приходилось делать правки в notepad, а затем замещать все сообщение в окне целиком и снова смотреть, как оно выглядит на форуме.
Весьма очевидно, что потуги "отредактировать наоборот", для того чтобы заполнить форму при вызове редактирования сообщений - в общем случае невозможны. Кроме того, будет просто проще держать авторский текст в том виде, как он есть. Это позволит кроме того работать фильтрам задним числом, без правки авторских текстов. Ясное дело, что лежа в файле "вредные теги" никакой опасности не представляют. Кроме того, у тебя самого появится возможно опробывать разные формы фильтра, просто генерируя страничку по-новой и наблюдая, как новый фильтр вправляется со старыми сообщениями. Не будет просьб со стороны пользователей "Сергеич, верни мне мой текст! Ты его совсем заредактировал" :-))) Кроме того, у тебя самого появится еще позможность иметь докуменальное подтверждение о злоупотреблении лиц, пытающихся взломать форум. А вырезая автоматом "бяки" ты тем самым завязываешь себе глаза до тех пор, пока очередная попытка не окажется удачной и на тебя со всех сторон посыплются жалобы.
----
Pipa

<font size="1" color="#CCCCCC">Исправлено: 28-02-2003 13:58:38</font>

ц и т а т а

AesirLoki
написано:28-02-2003 14:09:28
43

Зато поиск рулить стал! Присылает:

@^lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitiоnal//EN"@^gt;
@^lt;HTML@^gt;@^lt;HEAD@^gt;
@^lt;META cоntent="text/html; charset=windows-1251" http-equiv=Cоntent-Type@^gt;@^lt;/HEAD@^gt;
@^lt;BODY@^gt;@^lt;/BODY@^gt;@^lt;/HTML@^gt;

ц и т а т а

sergejh
написано:28-02-2003 15:40:34
44

dt
Попробовал твой кусок. Не вырезает изнутри ссылки OnMouseОvеr.

Pipa
Хорошая идея насчет вырезания тегов на этапе генерирования html, а в базе хранить "оригиналы". Приму к сведению.

Вот regexp'ы у меня до сих пор слабое место... :) Ну не понимаю я, когда целая куча точек, запятых, звездочек, вопросов подряд идут, как это работает. :) Хотя есть хороший учебник. Надо взяться за это серьезно...

ц и т а т а

Weather Report
написано:28-02-2003 15:52:36
45

а можно мне стать мудером в раздел ОВД+ ? :)))

буду белым и пушитсым (по крайней мере в момент ОВД 4ого-уровня-по-ксену) =)

ц и т а т а

Ваш ответ:





Translit

Взгляните на название - вы уверены, что ваше сообщение удовлетворяет теме?

Это сообщение может стать вашим последним действием на Земле. :) Вы готовы принять на себя такую ответственность?
Имя, пароль:

   
Страницы: 3 ... 54 55 

Перейти в список тем раздела "Мусор"

Easy Forum ver 3.0
sergejh 2003-2005