# ДоХтор (01.02.2017 / 19:30)
Верно. Сразу не сообразил, гг
А если несколько ников? Тоже сработает?            
 
                        
         
            
            
            
                Eternal,  думаю это почти не реально, но можно в запрос добавить лимит 1            
                        
         
            
            
            
                # Eternal (26.06.2017 / 05:11)
А если несколько ников? Тоже сработает?
Напиши пример того, о чём ты говоришь.            
 
                        
         
            
            
            
                ДоХтор,  А я бы выкинул запросы из калбека, не ровен час особо одаренные юзеры начнут перед каждым словом, где нибудь в библиотеке хештеги писать

Как то так наверно попроще будет
function linkUser($string)
{
    global $db; // це в 6-ой ветке наверно не надо))
    if (preg_match_all('/\s@([A-zА-я]{3,20}+)/u', $string, $matches)) {// что то типа этого в регистрации логина
            $array = (array_count_values($matches[1]));
            while (current($array)) {
               $value = key($array);
               next($array);
               $val[] = '\'' . $value . '\'';
            }
    } else { // если хештегов нет прекращаем движение к базе)))
        return $string;
    }
    // BINARY надо, иначе mysql не всегда отличается сообразительностью
    $res = $db->query("SELECT `id`, `name` FROM `users` WHERE BINARY `name` IN(" . join(', ', $val) . ")")->fetchAll();
    if (count($res)) {
        foreach($res as $post) {
            $string = str_replace($post['name'], '[user=' . $post['id'] . ']' . $post['name'] .'[/user]', $string);
        }
    }
    return $string;
}
             
                        
         
            
            
            
                kantry,  с телефона пока не могу оценить преимущества, но на первый взгляд мне уже не нравятся два цикла. Если не ошибаюсь, циклов вообще стараются избегать, вместо них юзают что-то встроенное в язык, типа array_walk или array_map и т.п.
Позже посмотрю твой пример с компа. Спасибо 
             
                        
         
            
            
            
                # ДоХтор (26.06.2017 / 12:36)
kantry,  мне уже не нравятся два цикла.
Да вроде наоборот убрал рекурсию, почти)) 
Мне проверить не на чем, неработает 6-ая версия

А комп такой же древний как у тебя
             
                        
         
            
            
            
                на самом деле тут палка ещё та, и цикл плохо, и функция плохо. в функции если баг поймал, логи молчат            
                        
         
            
            
            
                Koenig,  Его вариант можно использовать только с ограничением, напр. 5 вхождений, в противном случае, 1000 слов - 1000 sql-запросов, если юзер "продвинутый"            
                        
         
            
            
            
                kantry,  это если динамическая замена происходит, если парсер на инсерте будет преобразования делать, то количество не так страшно. 
тут в теме уже обсуждалось            
                        
         
            
            
            
                # Koenig (26.06.2017 / 13:07)
kantry, если на инсерте будет преобразования делать, то количество не так страшно.
Прекрати, это то же самое что есть сырые пелемени, когда есть плитка)))