Задать вопрос
@nioterzor

Как хранить НЕ plain text сообщения в базе данных?

Есть web-приложение.

В нем есть чат, в котором можно писать только текст. Сообщения хранятся в поле типа `text`.

Как дать возможность указывать пользователей в сообщении, чтобы они об этом узнали?

Например, один пользователь пишет в общем чате

@Василий Пупкин, смотри сюда.

Текст "@Василий Пупкин" при этом должен как-то выделяться, чтобы можно было по клику на него перейти в профиль пользователя.

Вариант такой: в базе будет сохранено "[user=48754], смотри сюда." Бэкенд перед отправкой в браузер распарсит сообщение и покажет все красиво. Очевидно, не лучший вариант.

Как такая задача (хотя бы приблизительно) реализована у крупных сайтов (соц. сетей, например)? И как реализовать это на фронтэнде? Показывать текст, а на сервер отправлять специально сформированное сообщение "[user=48754], смотри сюда."?
  • Вопрос задан
  • 119 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Почему бы не сделать это через JavaScript? Ищем в сообщении шаблон вида "@буквы", если то, что после "@" есть в списке пользователей, который можно например, закэшировать в браузере или запрашивать через AJAX - меняем "это" на соотв. ссылку или то, что на нужно.

Вариант 2: Парсим сообщение на сервере, в поисках шаблона "@буквы" (можно через регулярку), если пользователь есть в базе - заменяем на соотв. код (ссылка, выделение и т.д.).

Так на вскидку, первый вариант подойдёт для выделения личных сообщений, второй - для того, что бы имена выделялись вообще, как таковые (как например, на тут, на Тостере).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы