'~(@(.*))~iu'
->
'~@([^\s]+)~'            
                        
         
            
            
            
                '~@([^\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, благодарю.            
 
                        
         
            
            
            
                Модификаторы ui ненужны, шаблон не регистрозависимый же
но учти, данный шаблон пропустит все кроме пробела, конца строки
фильтрация обязательна            
                        
         
            
            
            
                # ramzes (31.01.2017 / 18:50)
Модификаторы ui ненужны, шаблон не регистрозависимый же
но учти, данный шаблон пропустит все кроме пробела, конца строки
фильтрация обязательна
На счёт регистра - согласен. А вот юникод в никах вполне может использоваться, поэтому "u" должен быть в шаблоне. На счёт фильтрации - там джоновские функции сперва отрабатывают, а потом уже результат передаётся в мой метод.            
 
                        
         
            
            
            
                Ты не понял, шаблону все равно, уникод там или еще что, он сьедает все, кроме пробела.
Пофиг, какой регистр            
                        
         
            
            
            
                Переписал скрипт с учётом всех предпочтений. Если кому-то не нравится @ перед ником, то вы можете задать любой другой(допустимый) символ(ы) во втором параметре метода linkUser($str, $s = '@')
 Распаковать архив в корень сайта. Будут изменены файлы functions.php и bbcode.php.            
                            
                
                        
         
            
            
            
                ДоХтор,  вроде как не так имелось ввиду, то есть перед записью в базу, ты меняешь @Вася на [url=/profile&id=1]Вася[/url]
тогда не будет парсинга при каждом обращении к странице            
                        
         
            
            
            
                # Koenig (31.01.2017 / 23:55)
ДоХтор,  вроде как не так имелось ввиду, то есть перед записью в базу, ты меняешь @Вася на [url=/profile&id=1]Вася[/url]
тогда не будет парсинга при каждом обращении к странице
Так и есть. Перед записью в базу парсится пост юзера, и если в базе есть такой ник, то  @Вася меняется на [url=/profile&id=1]@Вася[/url] и сохраняется в базе. А при выводе уже база не дёргается, и обрабатывается bb-код.            
 
                        
         
            
            
            
                ДоХтор,  так вроде у тебя новый ббкод, а можно обычный код ссылки замутить            
                        
         
            
            
            
                # Koenig (01.02.2017 / 10:59)
ДоХтор,  так вроде у тебя новый ббкод, а можно обычный код ссылки замутить
Верно. Сразу не сообразил, гг