Я использую wp-db.php на не WordPress сайте, который позволяет использовать функцию apply_filters. Я изначально сделал это:
function apply_filters($type, $input) {
return strip_tags($input);
}
Я хочу, чтобы остановить сохранение HTML. Я думал, что я решил проблему, но потом заметил, что SQL-запросы, которые включают в себя такие вещи, как <= не работал
Я хочу удалить теги, начинающиеся с символа, например, <b...
но если после скобки есть пробел или знак равенства, например <
или же <=
тогда это не должно удалить это.
Я нашел этот код, но он не работает так, как я хочу:
preg_replace('/<[^>]*>/', '', $input);
например
<b>test</b> abc <= def < ok? ilj >= xyz >
возвращается как:
test abc = xyz >
это должно только удалить <x...>
где х не пробел или знак равенства и удалить </....>
Кстати, я заметил, что < скрипт> не работает, так что я думаю, что это нормально для < с пробелом после пребывания.
Вы можете использовать некоторую строку preg_match для выполнения операции. Но не уверен, что он будет работать на всех пользовательских строках. Таким образом, вы можете использовать htmlspecialchars
функция, которая изменит
> is >
< is <
Вы можете узнать больше о функции здесь
http://www.w3schools.com/html/html_entities.asp
После этого примените strip_tags
чем это будет работать для вас.
Таким образом, вы должны пойти с функцией preg_match. Попробуй это.
preg_replace("# <(?![/a-z]) | (?<=\s)>(?![a-z]) #exi", "htmlentities('$0')", $html);
Действителен только первый тег:
<b>1</b> <0b>2</0b> < b>3</ > <'b>4</'b> <(>5</(> <=>6</=>
Это не жадное регулярное выражение удаляет допустимые и закрывающие теги:
/<[^(=\d' )].*?>
/г
в php:
preg_replace('/<[^(=\d\' )].*?>/', '', $input);
Увидеть https://regex101.com/
У меня были другие теги из-за sql, как:
col1 < 10
col2 <10
col3 <'2010-10-10'
col4 <(SELECT col5...)
col5 <=20