2015-12-11 2 views
-1

Существует функция strip_tags(), которая удаляет все теги из ввода, и мне интересно, есть ли функция, которая вместо удаления всех тегов из ввода преобразует их в строку вместо этого, как это делает stackoverflow, когда мы отступаем от наших кодов. А если нет, что я должен использовать вместо этого?Преобразование тегов в строки в PHP

выход:

наклонным

нужен выход:

<i> italic </i> 
+0

Это не преобразование в строку, оно ускользает, так что они не обрабатываются. Для этого используйте 'htmlspecialchars()' или аналогичную функцию. –

ответ

1

Функция, которую вы хотите, это http://php.net/manual/en/function.htmlspecialchars.php.

Код:

$string = '<i> italic </i>'; 
echo htmlspecialchars($string); 

Демо: https://eval.in/483903

Выход:

&lt;i&gt; italic &lt;/i&gt; 

Который в браузере будет отображаться как:

< я > я талик </я >

+0

Итак, это делает то же самое, что и strip_tags() в том смысле, что оно не позволяет пользователям выполнять скрипты на наших сайтах, так? – jessica

+0

Это преобразует элементы в эквивалент их сущности. Strip_tags фактически удаляет сам элемент. Пользователь может все же использовать XSS с этим подходом, хотя в зависимости от того, как вы выводите. Цитаты могут быть использованы для закрытия атрибута, тогда можно добавить 'onclick' и т. Д. – chris85

+0

Что делать, если мы объединим это с mysqli_real_escape_string? – jessica

0

Вы можете использовать htmlspecialchars(), как сказано в комментариях или сделать это вручную.

$str = "<i>something</i>"; 

echo str_replace("<", "&lt;", $str); 
1

Вы можете использовать HTML <pre> тег.

Смежные вопросы