Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Фильтрация входящих данных или вывод

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


     27.12.2012    Общие вопросы по PHP    1789

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

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

Ответил: BR0kEN


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

Комментарии пользователей (5)

hatchees
65 | 74

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
65 | 74

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

Списибо

BR0kEN
163

235 | 275

BR0kEN - 27 декабря 2012 23:09 - Эксперт

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

Sander
1126

1638 | 1204

Sander - 27 декабря 2012 23:18 - Эксперт

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

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

ICQ: 404-037-556
Skype: Sander8804

hatchees
65 | 74

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

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

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

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