Всем доброго времени суток Друзья!
Столкнулся с такой проблемой - на сайте стоит форма комментирования, в ней можно использовать bb коды, проблема в том, что некоторые пользователи используют запрещенные коды. Все мои попытки найти функцию которая бы работала с валидацией bb кодов не принесли результатов (неделю искал, перерыл весь инет), после попробовал сам написать, но к сожалению не совсем разобрался с работой регулярных выражений regexp, да и велосипед изобретать не очень хочется.
Код который я писал, прошу не пинать
Функция проверки текста
PHP:
скопировать код в буфер обмена
function BBvalidation($str, $PatentBB, $IllicitBB ){ $str = preg_replace("/\[(\/?)\]/is", "", $str);//Удаляет пустышки return $str; } //Создаю два массива с доступными BB кодами и подменой для них "/\[b\](.*?)\[b\/\]/is" ); '[b]$1[/b]', ); //Пример входящих данных $str = 'текст 1 [CENTER][B] текст 2 [/B][/CENTER][size=3] текст 3 [/size][EMAIL="email"] [][][][/] текст 4'; //Ну и выводим все это дело echo BBvalidation($str, $arrPatentBB, $arrIllicitBB ); /* Результат текст 1 [CENTER][B] текст 2 [/B][/CENTER][size=3] текст 3 [/size][EMAIL="email"] текст 4 */
Часть кода удалилась но все равно остались запрещенные теги и не закрытый
Предполагаю, что регулярку нужно писать по другому принципу, все что не разрешено удаляем, и не закрытые тоже удаляем, в таком случае нужно одним выражением описать функцию для preg_replace
В общем как то-так.
Заранее спасибо за любую помощь с решением вопроса.(Отредактировано автором: 19 Апреля, 2016 - 21:23:04)
|