че то я не пойму, там какой то косяк или что? особо не тестил, но тупо взяв первый кусок кода отсюда, заменил переменную $text на $message:
// begin test "hide" with "="
// если указано число ограничение постов [hide=число_ограничения_постов]
if (strpos($message, 'hide=') !== false)
{
if ($pun_user['is_guest'])
{
$message = preg_replace("#\[hide=([0-9]*)](.+?)\[/hide\]#is", '<b>[hided text]</b>', $message);
}
else
{
// выбираем число для ограничения из [hide=число_ограничения_постов] - по идее должно оказаться в $hide_count[1] =)
preg_match('#\[hide=([0-9]*)]#s',$text,$hide_count);
// админы, модеры и те, у кого количество постов больше, чем указано в ограничении - входят в if
if(($pun_user['g_id'] == PUN_MOD) || ($pun_user['g_id'] == PUN_ADMIN) || (($pun_user['num_posts']) >= ($hide_count[1])))
{
$message = preg_replace('#\[hide=([0-9]*)](.*?)\[/hide\]#s', '<blockquote>hided=$1:<br><i>$2</i></blockquote>', $message);
}
else
{
// иначе обламываем и говорим, сколько постов необходимо набрать, чтобы увидеть скрытый
$message = preg_replace("#\[hide=([0-9]*)](.+?)\[/hide\]#is", '<b>[hided text. u need '.$hide_count[1].' messages or more.]</b>', $message);
}
}
}
// another "hide"
// ну, тут все без изменений
if (strpos($text, 'hide') !== false)
{
if ($pun_user['is_guest'])
{
$message = preg_replace("#\[hide\](.+?)\[/hide\]#is", '<b>[hided text]</b>', $message);
}
else
{
$message = str_replace('[hide]', '<blockquote>hided:<br><i>', $message);
$message = preg_replace('#\[\/hide\]\s*#', '</i></blockquote>', $message);
}
}
// end test "hide"
и тыкнул в search.php после
$message = str_replace("\n", '<br />', pun_htmlspecialchars($search_set[$i]['message']));
вроде даже работает
)