Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Фильтрация входящих данных или вывод

Фильтрация входящих данных или вывод


     27.12.2012    Все вопросы » Общие вопросы по PHP    2836

вопрос
В DLE при добавлении комментариев, что бы не было введено в форму, оно отобразится как обычный текст, даже в при том случае, если это HTML или PHP, все равно вывод будет обычного текста. Конечно можно использовать тег code, но он не актуален...

Какая функция отвечает за эту фильтрацию?

Ответил: BR0kEN


Конкретно в PHP - это preg_replace.
В DLE создана функция BB_Parse (parse.class.php) в которой объединено множество регулярок preg_replace по которым и происходит замена HTML тегов на ASCII коды.

5 комментариев

hatchees
Юзер

hatchees - 27 декабря 2012 20:50 -

Оказывается это было просто..
$text = str_replace( "<", "&lt;", $text );
$text = str_replace( ">", "&gt;", $text );
$text = str_replace( "*", "&#42;", $text );
$text = str_replace( "/", "&#47;", $text );
$text = str_replace( ":", "&#58;", $text );
$text = str_replace( ";", "&#59;", $text );
$text = str_replace( "'", "&#34;", $text );
$text = str_replace( '"', "&#34;", $text );
$text = str_replace( '+', "&#43;", $text );
$text = str_replace( '{', "&#123;", $text );
$text = str_replace( '}', "&#125;", $text );
$text = str_replace( '|', "&#124;", $text );
$text = str_replace( '~', "&#126;", $text );
$text = str_replace( '#', "&#35;", $text );
$text = str_replace( '=', "&#61;", $text );
$text = str_replace( '`', "&#96;", $text );
$text = str_replace( '$', "&#36;", $text );
$text = str_replace( '&', "&#38;", $text );

hatchees
Юзер

hatchees - 27 декабря 2012 20:50 -

Списибо

BR0kEN
Эксперт

BR0kEN - 27 декабря 2012 23:09 -

Не за что, но мне кажется лучше заменять массивом.

Sander
PHP-developer

Sander - 27 декабря 2012 23:18 -

Массивом красивее, но выполняется по-моему дольше.
Когда-то проверял, но уже точно всех условий не помню.

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

hatchees
Юзер

hatchees - 28 декабря 2012 02:16 -

Эти знаки не нужно фильтровать, я так понял
$text = str_replace( '&', "&#38;", $text ); $text = str_replace( ";", "&#59;", $text ); $text = str_replace( '#', "&#35;", $text ); 
поскольку они используются в фильтровке )

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх