Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как безопасно вывести текст пользователя

Короткий ответ

Пропускайте через htmlspecialchars() всё, что выводите в HTML:

<?php
 
$comment = '<script>alert(1)</script>';
 
echo htmlspecialchars($comment);

Результат:

&lt;script&gt;alert(1)&lt;/script&gt;

С переносами строк

Сначала экранирование, потом nl2br():

<?php
 
$comment = "First line\n<b>Second</b>";
 
echo nl2br(htmlspecialchars($comment));

Результат:

First line<br />
&lt;b&gt;Second&lt;/b&gt;

Значение атрибута

Кавычки в значении тоже экранируются — поле формы не «сломается»:

<?php
 
$name = 'Tom "The Cat"';
 
echo '<input value="' . htmlspecialchars($name) . '">';

Результат:

<input value="Tom &quot;The Cat&quot;">

Функции из этого ответа

  • htmlspecialchars — Заменяет специальные символы HTML на безопасные обозначения.
  • strip_tags — Удаляет из строки HTML-теги.
  • nl2br — Вставляет тег br перед каждым переводом строки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.