09.09.2015, 14:37
|
Аспирант
|
|
Регистрация: 08.08.2015
Сообщений: 43
|
|
а как экранировать вывод html кроме <br>? например: есть текст и в нем \n переносы строк, если написать так:
{content|br}, то вместо <br> мы получим <br>
отэкранируются все символы, а нужно все, кроме <br>
|
|
09.09.2015, 14:42
|
Аспирант
|
|
Регистрация: 08.08.2015
Сообщений: 43
|
|
если написать так:
{content|br|!html}
то получится натуральная XSS
Что нужно написать в фильтр, чтобы не получить дыру в сайте и переводить строку?
Последний раз редактировалось MakeMeFeel, 09.09.2015 в 14:44.
|
|
09.09.2015, 15:22
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
MakeMeFeel,
- block tpl->outputWithBr(text)
: paragraphs = text.split('\n')
- forEach paragraphs -> p
{p}
< br
|
|
09.09.2015, 15:25
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Ну и, соответственно, создаёшь темплейт tpl, где и юзаешь активно этот блок)
|
|
09.09.2015, 15:28
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
А правильно, конечно, вот так:
- block tpl->p(text)
: paragraphs = text.split('\n')
- forEach paragraphs -> p
< p
{p}
|
|
09.09.2015, 16:16
|
Аспирант
|
|
Регистрация: 08.08.2015
Сообщений: 43
|
|
trikadin,
это весь текст нужно отпарсить, что это за жесть?
Сначала применяем фильтр на html, а затем грабли на перевод строки? Проще тогда дрюкать в браузере пользователя, чтобы сервер не упарывать.
Механизма встроенного, порядка фильтров например, нету? типа как в php nl2br?
, а и спасибо за пример.
|
|
09.09.2015, 16:21
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
MakeMeFeel, эээм, в чём проблема? Где нужно отпарсить какой текст? Не понял тебя)
|
|
09.09.2015, 16:26
|
Аспирант
|
|
Регистрация: 08.08.2015
Сообщений: 43
|
|
Сообщение от trikadin
|
эээм, в чём проблема?
|
Наверное в том, что это какой-то дикий костыль.
вместо записи: {content|nl2br} ты предложил писать весь твой код в блоке.
Как минимум нужно запихать твой код в фильтр. Но мне интересно, есть ли встроенных nl2br? чтобы его не писать. Для меня странно, что его нет или я что-то упустил?
Я уж не говорю о том, что ты навязываешь мне использование тега p
|
|
09.09.2015, 16:29
|
Аспирант
|
|
Регистрация: 08.08.2015
Сообщений: 43
|
|
Страннее всего, что нет html2br, экранировать всё, а переносы гнать в <br>
|
|
09.09.2015, 16:31
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
MakeMeFeel, если тебе принципиально сделать это фильтрами, то легко:
{text |html |replace '\n', '<br>' |!html}
Но это плохой вариант.
|
|
|
|