Просмотр поста

.
ДоХтор
'~@([^\s]+)~'
Я вроде бы пробовал этот вариант, и он чё-то работал не так, как надо было... В общем да, с этим шаблоном отпадают массивы и сопутствующие пара функций. В итоге код будет пока ещё таким:
* (+/-)
/**
     * Обработка текстов перед выводом на экран
     *
     * @param string $str
     * @param int $br   Параметр обработки переносов строк
     *                     0 - не обрабатывать (по умолчанию)
     *                     1 - обрабатывать
     *                     2 - вместо переносов строки вставляются пробелы
     * @param int $tags Параметр обработки тэгов
     *                     0 - не обрабатывать (по умолчанию)
     *                     1 - обрабатывать
     *                     2 - вырезать тэги
     *
     * @return string
     */
    public static function checkout($str, $br = 0, $tags = 0)
    {
        $str = htmlentities(trim($str), ENT_QUOTES, 'UTF-8');
        if ($br == 1) {
            // Вставляем переносы строк
            $str = nl2br($str);
        } elseif ($br == 2) {
            $str = str_replace("\r\n", ' ', $str);
        }
        if ($tags == 1) {
            $str = bbcode::tags($str);
        } elseif ($tags == 2) {
            $str = bbcode::notags($str);
        }
        return self::linkUser($str);
    }
    
    /**
    * Ссылка на профиль по символу @
    * 
    * @param string $str
    * 
    * @return string
    */
    public static function linkUser($str) {
        $str = preg_replace_callback(
            '~@([^\s]+)~iu',
            function ($a) {
                $us = mysql_fetch_assoc(
                    mysql_query("
                        SELECT `id` FROM `users` 
                        WHERE `name` = '". mysql_real_escape_string($a[1]) ."'
                    ")
                );

                if (!empty($us['id'])) {
                    return '<a href="'. $home .'/users/profile.php?user='. 
                        $us['id'] .'">'. $a[0] .'</a>';
                } else {
                    return $a[0];
                }
            },
            $str
        );
        return $str;
    }
ramzes, благодарю.