Как отобразить форматированную строку с помощью функции реальной escape-строки MySQLI

У меня есть текстовое поле, где пользователь может публиковать html-коды, и я очищаю сообщение с помощью функции mysqli_real_escape_string(), когда пользователь вводит что-то подобное.

===Предположим===

$post="
<html>

<body>

     <p> Some Paragraph </p>

</body>

</html>

";

когда я дезинфицирую, это переменная $post с функцией mysqli_real_escape_string(), подобной этой

$post=mysqli_real_escape_string($dblink,$post);

после сохранения этой переменной в базе данных, когда я показываю эту переменную

echo"<pre>".$post."</pre>";

Это будет отображаться

<html>\r\n\r\n<body>\r\n\r\n     <p> Some Paragraph
</p>\r\n\r\n</body>\r\n\r\n</html>      

Пожалуйста, дайте мне любое решение, чтобы я мог отображать свои форматированные разметки


person user3610919    schedule 29.03.2015    source источник
comment
используйте функцию htmlentities в php. проверить руководство   -  person Anant Kumar Singh    schedule 29.03.2015
comment
где я должен использовать при отправке своих данных или отображении   -  person user3610919    schedule 29.03.2015
comment
Оба раза вы должны использовать это   -  person Anant Kumar Singh    schedule 29.03.2015
comment
Я использую ваш трюк, но теперь он выглядит так: html\r\n\r\nbody\r\n\r\n p Some Paragraph /p\r\n\r\n/body\r\n\r\n/ html не похож на форматированный текст   -  person user3610919    schedule 29.03.2015
comment
проверьте эту ссылку: - stackoverflow.com/questions/9085483/   -  person Anant Kumar Singh    schedule 29.03.2015


Ответы (1)


Да, хак, но, возможно, быстрое исправление, пока вы не сможете провести рефакторинг. Оберните $post функцией str_replace, заменив "\r\n" на "\n":

echo"<pre>".str_replace('\r\n', "\n", $post)."</pre>";

Предложения по рефакторингу:

Декодирование mysql_real_escape_string() для вывода HTML

В двух словах, используйте PHP mysqli_* Подготовленные операторы для очистки сообщения, а не mysqli_real_escape_string.

person bloodyKnuckles    schedule 29.03.2015
comment
Тогда я предполагаю, что mysqli_real_escape_string не нужен. - person bloodyKnuckles; 29.03.2015
comment
Но я думаю, что санация необходима с подготовленными заявлениями или без них. - person user3610919; 29.03.2015