У меня есть эта функция, которая берет некоторый отправленный пользователем HTML-код из базы данных:
function Code($code)
{
return "<pre><code>".nl2br(htmlspecialchars($code))."</code></pre>";
}
Я буду называть это просто echo code($query->row('html'));
. Я знаю, что моему вопросу не хватает глубины, но лучше ли это сделать? Или выводимое форматирование могло быть проанализировано (например, инъекции Javascript) или выводилось некорректно на некоторых машинах и т. Д.?
Спасибо!
Джек
РЕДАКТИРОВАТЬ: у меня есть новый (связанный) вопрос: я хотел бы выделить строку с помощью highlight_string()
. Однако я не могу заставить его работать должным образом. Я думаю, что понимаю почему, но не уверен, как это исправить.
function Code($code)
{
return "<pre><code>".highlight_string(nl2br(htmlspecialchars($code)))."</code></pre>";
}
Как видно из этого, я использую highlight_string()
для всего этого. однако вывод вообще не выделяется, вместо этого он выводится как символьные сущности (<
, '›' и т. д.). Если я изменю порядок функций на что-то вроде:
return "<pre><code>".nl2br(htmlspecialchars(highlight_string($code)))."</code></pre>";
Я обнаружил, что объекты символов не выводятся, но строка по-прежнему не подсвечивается. Чтобы уточнить, у меня нет форматирования CSS, которое также повлияло бы на применяемый цвет текста. Кроме того, я проверил свои настройки PHP, и там определенно указаны цвета подсветки.