Хак functions.php | Ссылка на профиль по символу @

904
.
# ДоХтор (01.02.2017 / 19:30)
Верно. Сразу не сообразил, гг
А если несколько ников? Тоже сработает?
.
(\/)____o_O____(\/)
Eternal, думаю это почти не реально, но можно в запрос добавить лимит 1
.
~ PHP-7 & REGEXP - This is a really powerful kit ~
# 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;
}
.
~ PHP-7 & REGEXP - This is a really powerful kit ~
kantry, с телефона пока не могу оценить преимущества, но на первый взгляд мне уже не нравятся два цикла. Если не ошибаюсь, циклов вообще стараются избегать, вместо них юзают что-то встроенное в язык, типа array_walk или array_map и т.п.

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