@nioterzor

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

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

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

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы