Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите подправить кодировщик 
:(
    Опции темы
ksnk
Дата 14.7.2013, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Для таких случаев проще мскать и менять именно такие двойные комбинации: 2x открытые+ 2x закрытые . 

А есть ли смысл менять именно квотирование? Может так и надо, типа это ответ на ответ с квотированием?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Arantir
Дата 14.7.2013, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



Цитата(animegirl @  14.7.2013,  17:28 Найти цитируемый пост)
я скорее о такой конструкции

Тогда добавьте третью регулярку:
Код

/(\[\/?guote\]){2,}/
с заменой на $1
и вот это 
Код

1[quote][quote]3[/quote][/quote]5
1[quote][quote][quote]3[/quote][/quote][/quote]5
1[quote][quote][quote][quote][quote]3[/quote][/quote][/quote][/quote][/quote]5
превратится в это 
Код
1[quote]3[/quote]5
1[quote]3[/quote]5
1[quote]3[/quote]5


А для морального удовлетворения вынести подобные регулярки в функцию cleanup() и вызывать ее перед code_to_html() =)



--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
animegirl
Дата 14.7.2013, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



ksnk
Так там не будет двойных, там в итоге внутри будет уже див, см. выше рекурсивность из внутри наружу будет идти. А менять двойные не выход, ведь текст может быть либо до либо после.

По-поводу второго пункта, цитирование цитаты это как бы то, что мы добивались вчера, и это устраивает, но предполагается, что человек не будет составлять весь свой пост из банального цитирования, а тем более, что цитирующий будет цитировать пост состоящий тупо из цитирования. В довесок, эти все извращения делаются только для безымянного цитирования, в цитирование с указанием автора, я так свирепствовать не буду )

Добавлено через 2 минуты
Arantir
А во что тогда превратится такое:
Код

1[quote][quote]3[/quote]4[/quote]5

 smile

Добавлено через 3 минуты и 47 секунд
Я уже не плохо себе голову поломала над этими всеми вариантами, варианты, я продумала досконально, мне бы теперь регулярку подправить как надо, а не по новой передумывать как сделать, у меня почему-то детект дива с атрибутами и текстом не работает (, а именно вот этот момент в регулярке:

/\[quote\]([^\[quote\]]|^[.*]^[^<div.*>.*<\/div>]*?$|.*?)\[\/quote\]/igm,

Добавлено через 5 минут и 17 секунд
Русским языком примерно так:
Ничего не делать, если попадается внутри [цитата], так же ничего не делать если попадается внутри див с атрибутами но без текста по бокам, преобразовывать, только если внутри любой другой текст.


--------------------
Скажи миру - НЯ!
PM   Вверх
AVA12
Дата 14.7.2013, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 4.5.2008

Репутация: 2
Всего: 4



Угу. "Now they have two problems".

Пытаться распарсить произвольные вложенные теги с помощью единственного регвыра - задача изначально обреченная. Обязательно найдется пример, способный сломать самый хитрозакрученный регвыр. И как быть, если юзер ввел некорректный текст (например, закрыл теги не в том порядке)? Так что только синтаксический анализатор, как подсказывает ksnk.
PM ICQ Jabber   Вверх
animegirl
Дата 14.7.2013, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Цитата(AVA12 @  14.7.2013,  22:05 Найти цитируемый пост)
 И как быть, если юзер ввел некорректный текст (например, закрыл теги не в том порядке)?


Пытаюсь представить вариант, в голове, но не получается понять, о чём вы, можно пример?


--------------------
Скажи миру - НЯ!
PM   Вверх
ksnk
Дата 14.7.2013, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



пример неправильного форматирования?
Код

[quote=AnonimUser time="12/12/12 11:11:11"] [b ][i] Some text [/quote]
some more text [b ] bold[/b]



в этом случае (при квотировании потерян b и i) При этом регулярки сделают болдом весь квотированный текст, что, наверное, правильно, но и текст после него, что видимо, неправильно.

При "обычном" (в моем понимании   smile ) парсинге несложно откорректировать неправильно закрытые теги (просто добавив закрывающие и игнорировав непарные закрывающие). При желании, можно отдать юзеру для корректировки с указанием места неправильного форматирования.
Если парсить регулярками, и откорректировать и диагностировать ошибки затруднительно. Нужно писать дополнительные регулярки, как с пустым квотированием ...

Это сообщение отредактировал(а) ksnk - 14.7.2013, 23:05


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
animegirl
Дата 14.7.2013, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Цитата(ksnk @  14.7.2013,  23:04 Найти цитируемый пост)
в этом случае (при квотировании потерян b и i) При этом регулярки сделают болдом весь квотированный текст, что, наверное, правильно, но и текст после него, что видимо, неправильно.

Прочитала - не поверила, запихнула в своё форму, прогнала - как я и предполагала, регулярка их просто игнорирует, так как нету закрывающих тэгов

Добавлено через 2 минуты и 33 секунды
Цитата(ksnk @  14.7.2013,  23:04 Найти цитируемый пост)
При "обычном" (в моем понимании    ) парсинге несложно откорректировать неправильно закрытые теги (просто добавив закрывающие и игнорировав непарные закрывающие). При желании, можно отдать юзеру для корректировки с указанием места неправильного форматирования.Если парсить регулярками, и откорректировать и диагностировать ошибки затруднительно. Нужно писать дополнительные регулярки, как с пустым квотированием ...

Вы переоцениваете мою прогибчивость перед юзером. У меня политика такова: Неправильно использовал, увидишь косячную прорисовку - задумаешься, отредактируешь, будет выглядеть нормально. Я же всё-таки не няньку юзеру программирую.

Добавлено через 6 минут и 47 секунд
Из выше написанного прямо вытекает: Моя задача продумать прорисовку, косяки юзер пускай исправляет сам.

Задумалась. Ок, да отслеживание с дивами, это я походу всё-таки в няньку ударилась, но тут скорее возможность именно того, что юзер заквотит другого юзера, который скосячил. Как-то так.

Да и вообще, дискуссия ушла от темы слишком далеко, как мне конкретную вещь отловить регуляркой? А именно:
Код

НЕ <div class=\"quote_div\">$1</div>

ну, чтоб так же работало как с
Код

[^\[quote\]]



--------------------
Скажи миру - НЯ!
PM   Вверх
animegirl
Дата 26.7.2013, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Моя эпопея не закончена, оставила лазейки для XSS, надо бы заделать.
Было
Код

/\[img\](*?)\[\/img\]/igm,

сделала
Код

/\[img\]([^"']|.*?)\[\/img\]/igm,

Текст такого вида:
Код

[img]http://a2.rimg.info/69cbed426ec968b7b1f010770d015bc3.gif" onclick="alert('dfg');[/img]

Удачно отсеивается, а вот
Код

[img]" onclick="alert('dfg');[/img]

делает своё гадкое дело. (

Не могу понять, почему не работает отрицание. Можете подправить?


--------------------
Скажи миру - НЯ!
PM   Вверх
Arantir
Дата 26.7.2013, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



Цитата(animegirl @  26.7.2013,  19:53 Найти цитируемый пост)
Не могу понять, почему не работает отрицание.
Цитата(animegirl @  26.7.2013,  19:53 Найти цитируемый пост)
([^"']|.*?)

По русски:
ИЛИ [что угодно, кроме кавычек], ИЛИ  [все что угодно]

Запихивая туда текст с кавычками, конечно же, побеждает вторая половинка выражения.
Вероятно, имелось ввиду 
Код
([^"']*?)
 так как [^"'] - это уже "любой символ кроме этих двух".

Это сообщение отредактировал(а) Arantir - 26.7.2013, 23:22


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1133 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.