Я пытаюсь передать сообщение шаблону усов, который выглядит примерно так:
Указанный вами URL http://example.com
недействителен.
Пользователь указывает URL-адрес, поэтому его необходимо экранировать. Однако я хочу разместить теги <code>
вокруг URL-адреса, чтобы он выделялся на фоне окружающего текста, поэтому теги кода необходимо пропускать без экранирования.
Я мог бы написать что-то вроде этого:
{{text_before_url}}<code>{{url}}</code>{{text_after_url}}
Однако текст сообщения может быть разным, и он не всегда будет соответствовать этой структуре.
Я мог бы также попытаться вывести необработанный текст с тремя фигурными скобками, {{{messages}}}
, и экранировать URL с чем-то вроде htmlentities($url)
, но если кто-то позже адаптирует программу для передачи нового сообщения и передает данные, не осознавая его нужно избежать, тогда у нас большие проблемы с XSS.
Возможно, мне просто не повезло, и я понимаю ценность наличия простого движка шаблонов, но есть ли какой-то способ, которым я могу сказать Усу, что с HTML-тегами все в порядке, при этом выходя из остальной части вывода?
Кевин