вот так это выглядит на данный моментАвтор оригинала: white phoenix
Serg
решение пришедшее мне в голову imho не правильное, т.е. не самое оптимальное, но имеет право на существование. ищешь все _допустимые_ теги и модифицируешь их: "<(/)b>" -> chr(1)."(/)b".chr(1), затем htmlspecialchars, затем обратно chr(1)."(/)b".chr(1) -> "<(/)b>", я думаю chr(1) присылать никто не будет, тем не менее для корректной работы, удали предварительно chr(1) из строки. [offtop]если не удалишь из строки, и будешь использовать рег. выражение для замены chr(1)."(/)b".chr(1) -> "<(/)b>", это может вызвать уязвимость css.[/offtop]
$text = preg_replace("/&/is", '&', $text);
$text = preg_replace("/</is", '<', $text);
$text = preg_replace("/<(\/?)(p|div|i|em|b|strong|a|img)([^a-zA-Z0-9])/is", '<\1\2\3', $text);
$text = preg_replace("/&/is", '&\1', $text);
preg_replace("/<([\s\n\!\@\$\#\%\?]*\/?\W*)!(список разрешенных тэгов)(\W*)/is", <\1\2\3, $text);
$test_string = "<div>U are very beautiful <b>girl</b>, but alas <img src='/f$k_u_bush' />I've got another <i>business in here</i>. See ya later!</div>";
// Запрещенные парные тэги
$not_allowed_tags['dual'] = array('div','i','emote'....);
// Запрещенные непарные тэги
$not_allowed_tags['single'] = array('img','br','hr'....);
// Строка поиска для парных
$search_string = '/(?:<((?!'.implode("|",$not_allowed_tags['dual']).'.*?)>)(.*?)(?:<\/(\1)>)/msi';
preg_replace($search_string,'/\2/',$test_string,-1);

Ничего не говорит - можно прямую ссылку на "почитать"?Автор оригинала: svetasmirnova
PEAR::HTML_Safe Только там не одна строчка![]()
да в принципе это должно быть нормальной практикойАвтор оригинала: zarus
... поля надо жестко подгонять под тот тип, который нужен...
