а как экранировать вывод html кроме <br>? например: есть текст и в нем \n переносы строк, если написать так:
{content|br}, то вместо <br> мы получим <br> отэкранируются все символы, а нужно все, кроме <br> |
если написать так:
{content|br|!html}то получится натуральная XSS Что нужно написать в фильтр, чтобы не получить дыру в сайте и переводить строку? |
MakeMeFeel,
- block tpl->outputWithBr(text) : paragraphs = text.split('\n') - forEach paragraphs -> p {p} < br |
Ну и, соответственно, создаёшь темплейт tpl, где и юзаешь активно этот блок)
|
А правильно, конечно, вот так:
- block tpl->p(text) : paragraphs = text.split('\n') - forEach paragraphs -> p < p {p} |
trikadin,
это весь текст нужно отпарсить, что это за жесть? Сначала применяем фильтр на html, а затем грабли на перевод строки? Проще тогда дрюкать в браузере пользователя, чтобы сервер не упарывать. Механизма встроенного, порядка фильтров например, нету? типа как в php nl2br? , а и спасибо за пример. |
MakeMeFeel, эээм, в чём проблема? Где нужно отпарсить какой текст? Не понял тебя)
|
Цитата:
вместо записи: {content|nl2br} ты предложил писать весь твой код в блоке. Как минимум нужно запихать твой код в фильтр. Но мне интересно, есть ли встроенных nl2br? чтобы его не писать. Для меня странно, что его нет или я что-то упустил? Я уж не говорю о том, что ты навязываешь мне использование тега p |
Страннее всего, что нет html2br, экранировать всё, а переносы гнать в <br>
|
MakeMeFeel, если тебе принципиально сделать это фильтрами, то легко:
{text |html |replace '\n', '<br>' |!html} Но это плохой вариант. |
Часовой пояс GMT +3, время: 09:53. |