# ДоХтор (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, если на инсерте будет преобразования делать, то количество не так страшно.
Прекрати, это то же самое что есть сырые пелемени, когда есть плитка)))