Приветствую всех Тут возник вопрос по функции из САБЖ. PHP: echo strip_tags($text, '<p><a>'); 1. нужно ли указывать закрывающие теги? вот так: PHP: echo strip_tags($text, '<p></p><a></a>'); 2. если у меня используются CSS стили, то эта функция удалит теги с цсс указаниями (например такой <p TYPE=active></p>) или придется указывать конкретно вот так: PHP: echo strip_tags($text, '<p TYPE=active></p><a></a>'); PS как на ваш взгляд моя функция для простой защиты пхп скриптов? PHP: //_____ общая защита скрипта от нежелательных входных данных. проверка входных данных //_____ $data - входные данные :: $limit_symbol = ограничение по символам :: //_____ $accept_tags - разрешенные теги :: $n_to_br - замена \n на тег <br> (если = 1, то заменяет) function protection_script($data, $limit_symbol, $n_to_br, $accept_tags) { $data = trim($data); if ($limit_symbol > 0) { $data = substr($data,0,$limit_symbol); } if ($n_to_br == 1) { $data = ereg_replace("\n", '<br>', $data); } if ($accept_tags != 0 OR $accept_tags != '') {$data = strip_tags($data, $accept_tags); } return $data; }
На оба вопроса в документации ответ дан красным цветом. Because strip_tags() does not actually validate the HTML, partial, or broken tags can result in the removal of more text/data than expected. This function does not modify any attributes on the tags that you allow using allowable_tags , including the style and onmouseover attributes that a mischievous user may abuse when posting text that will be shown to other users.
К сожеланию не особ хорошо знаю английский.. Опираясь на свой и гугль перевод я правильно понял? 1. Пхп не всегда правильно определяет теги и может нарушиться труктура текста. Но все таки он определяет теги, поэтому </p> закрывающие теги не нужно указывать. 2. ПХП не определяет модификации текста типа TYPE=active, по этому если пользователь недобросовестно использовал эти расширения для стилей пхп может проглядеть этот тег. Я правильно понял или есть какие то неточности?