htmlspecialchars и теги

Anton63

Новичок
htmlspecialchars и теги

Всем здрасте!
Есть textarea, там можно писать теги <b>, <u>, <i>, <url>. Текст хранится в БД.
Из БД я делаю вывод при помощи htmlhspecialchars. Как сделать что бы эти теги остались действительными???
 

Фанат

oncle terrible
Команда форума
Anton63
такое разделение не имеет смысла. надо или все теги разрешать, или никакие.
 

Anton63

Новичок
Не, Wysiwyg не хочу... сделал на бб кодах...
strip_tags удаляет теги, а этого ненадо... надо, что бы все ненужные теги оставались, но недействовали...
Допустим я сделал на бб кодах тег ... Я конечно на выводе его заменить на <b></b>, но тогда и все остальные теги и скрипты пройдут...
 

dimagolov

Новичок
Anton63, ты в начале делаешь strip_tags, а потом заменяешь BB на теги.

-~{}~ 29.09.09 17:33:

хранишь то ты в том виде, в котором прислал юзер после strip_tags. если хочешь скорость отображения, то храни копию с замененными BB кодами, если скорость не критична, то заменяй при выводе.
 

Beavis

Banned
Anton63
типограф это не визивиг!
типографы обрабатывают текст как раз после визивига... удаляют лишние теги, правильно оформляют кавычки, тире и т.д.
 

Anton63

Новичок
Автор оригинала: *****
по-моему, он уже все сделал, и нормально.
Ну... не всё конечно... но сделал так:
Делал на бб кодах... а при выводе пропускаю через htmlspecialchars() и затем заменяю бб коды с помощью preg_replace(). Как то так...
 

SiMM

Новичок
PHP:
$str = '<a href=""><div><b>тест</b></div></a>';
$enable = array('b','u','i','a');
echo preg_replace('#<(/|)([^\s>]*)([^>]*)>#se','in_array("$2",$enable) ? "$0" : "&lt;$1$2$3&gt;"',$str);
 

Фанат

oncle terrible
Команда форума
Anton63
отличное решение

SiMM
оно ж ведь от хсс никак? или я ошибаюсь?
 

Вурдалак

Продвинутый новичок
Автор оригинала: SiMM
PHP:
$str = '<a href=""><div><b>тест</b></div></a>';
$enable = array('b','u','i','a');
echo preg_replace('#<(/|)([^\s>]*)([^>]*)>#se','in_array("$2",$enable) ? "$0" : "&lt;$1$2$3&gt;"',$str);
PHP:
$str = 
'<_ <script type="text/javascript" >>' .
'/*<_ */ ' .
'alert("test");' .
'</script >>';
 

SiMM

Новичок
> оно ж ведь от хсс никак?
Это идея, а не готовое решение, и вообще её, как и парсер bb-code, разумно на конечных автоматах делать.
 

SiMM

Новичок
> На PHP?
Вам это кажется невероятным? Какая разница, на чём?
 
Сверху