У меня есть эта функция, которая принимает некоторые пользовательские представленный HTML-код из базы данных:Форматирование HTML-код, который будет выводиться в виде обычного текста, с PHP
function Code($code)
{
return "<pre><code>".nl2br(htmlspecialchars($code))."</code></pre>";
}
Я просто называть это как echo code($query->row('html'));
. Я знаю, что мой вопрос не хватает «глубины», но это лучший способ сделать это? Или может быть проанализировано выводимое форматирование (например, Javascript-инъекции) или неправильно выводится на некоторых машинах и т. Д.?
Спасибо!
Джек
EDIT: У меня есть новый (относящийся) вопрос: Я хотел бы выделить строку с помощью highlight_string()
. Однако я не могу заставить его работать должным образом. I думаю Я понимаю, почему, но я не слишком уверен, как я могу это исправить.
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, и там определенно выделяются цвета, указанные там.
Отлично, спасибо! Я также добавил дополнительный бит к вопросу ... :) – Jack
@Jack 'highlight_string()' не будет работать, потому что вы находитесь в блоках 'pre' и' code'. Они не поддерживают форматирование HTML. –
Я изменил функцию Code(), чтобы прочитать следующее: 'return '.nl2br (htmlspecialchars (highlight_string ($ code)))." ";' - к сожалению, он все еще не работает. Я также попытался «перетасовать» глубину функции 'highlight_string()' (например, поставив ее спереди), но не повезло. Также есть необычные «1», см. Скриншот: http://cl.ly/603f491d7402e06125be - они определенно не находятся в данных базы данных. – Jack