Запрошенную вами встроенную функциональность будет сложно получить. У них есть много способов работы
1.) Вы можете использовать внешнюю библиотеку, например htmlpurifier http://htmlpurifier.org/
2.) Использование strip_tags ()
Вы можете использовать strip_tags()
, чтобы разрешить прохождение определенных тегов при удалении других опасных HTML-тегов
Например, разрешить только <h1> and <b>
при удалении других тегов, которые вы можете сделать
$text_strip = '<h1>Am nancy.</h1><div>hhhh</div> <b>Mooree</b> <a href="">remove me</a>';
// Allow only <h1> and <a>
echo strip_tags($text_strip , '<h1><b>');
см. Список доступных методов фильтрации данных фильтрация данных: https://www.php.net/manual/en/book.filter.php
3.) Использование FILTER_SANITIZE_STRING ()
Вы также можете использоватьFILTER_SANITIZE_STRING()
для фильтрации опасных текстовых вводов
echo filter_var ($text_text, FILTER_SANITIZE_STRING);
см. Список всех доступных методов очистки санитарная обработка: https://www.php.net/manual/en/filter.filters.sanitize.php
Обновления
еще кое-что. Вы все еще можете быть уязвимы для атаки инъекций sql, даже если вы используете pdo. Это потому, что pdo выполняет санитарную обработку путем эмуляции устаревшей функции mysql_real_escape_string (). вам нужно будет заставить pdo отключить эмуляцию и использовать прямые подготовленные операторы. я обновлю свой ответ
Чтобы решить эту проблему, см. код ниже для соединений с базой данных. Для charset установлено значение utf8
$db = new PDO ('mysql:host=localhost;dbname=mydb;charset=utf8',
'root', // username
'root123' // password
);
//Disable Emulates pdo and thus forces PDO to use real prepared statement.
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
. С этим выше вы на 100% защищены от всевозможных SQL-инъекций. напишите мне комментарий, если вы оцените это