Т.к. MySql я не знаю и с php не знаком, хотелось бы спросить, верно ли я формирую запросы и обрабатываю строки. Может можно как-то оптимизировать?
Код используется такой:
Код: Выделить всё
$sql = "SELECT u.username, pt.post_text
FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt
WHERE p.topic_id = $topic_id
$limit_posts_time
AND pt.post_id = p.post_id
AND u.user_id = p.poster_id
ORDER BY p.post_time $post_time_order
LIMIT $start, 1";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not obtain post/user information.", '', __LINE__, __FILE__, $sql);
}
$postrow = $db->sql_fetchrow($result);
$im_popup_post = $postrow['post_text'];
$im_popup_user = $postrow['username'];
А здесь удаляем из строки лишние пробелы, пробелы в начале и конце строки, удаляем символы новой строки (кстати, нужно r и n обрабатывать или только r?), удаляем bbcode, удаляем смайлики (это уже от форума зависит, на этом форуме коды типа :sm00:) и удаляем кавычки. Потом добавляем многоточие для длинной строки (строки предварительно обрезаем до 200 (до первого последнего пробела) или, если влезает в 240 символов, то оставляем целиком).
Код: Выделить всё
if (strlen($im_popup_post) < 240)
{
$im_popup_post = str_replace("\n", " ", $im_popup_post);
$im_popup_post = str_replace("\r", " ", $im_popup_post);
}
else
{
$im_popup_post = substr($im_popup_post, 0, 200);
$im_popup_post = str_replace("\n", " ", $im_popup_post);
$im_popup_post = str_replace("\r", " ", $im_popup_post);
$im_popup_post = substr($im_popup_post, 0, strrpos($im_popup_post, ' ') + 1) .' ...';
}
$im_popup_post = ereg_replace(":sm([0-9]{1,2}):", " ", $im_popup_post);
$im_popup_post = ereg_replace("\[([[:print:]]+)\]", " ", $im_popup_post);
$im_popup_post = str_replace("\"", " ", $im_popup_post);
$im_popup_post = trim ( $im_popup_post );
while ( strpos($im_popup_post,' ')!==false )
{
$im_popup_post = str_replace(' ',' ',$im_popup_post);
};
