dzheka3d
@dzheka3d

Как добавлять активные ссылки только на определенный домен?

Всем привет! Хочу сделать так, чтобы пользователи могли делиться ссылками в комментариях. Именно так, чтобы достаточно было просто вставить ссылку в текст, а при выводе она автоматически стала активной, но с оговоркой, что только те ссылки, которые ведут на текущий домен.
Как это реализовывать?
После добавления комментария заменять ссылки с помощью preg_replace? Но как потом защититься от xss атаки, ведь использовать htmlspecialchars уже не получится? Либо я не туда копаю...

Еще проблема, что в тексте могут быть ссылки в тегах <img>

например код:
$item = ' текст текст <img src="https://site.ru/news/411451389"><br> текст текст текст текст: https://site.ru/news/411451389,  текст текст <br> текст текст site.ru/news/411451389?sdfsdf=123 текст текст текст';

$regex = '~((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)~';
echo preg_replace($regex, '<a href="$1">$1</a>', $item);


вполне себе не плохо работает, но он заменяет адрес и изображения и видео в тегах, а нужны только чистые ссылки не находящиеся где-то в тегах
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Можно "активировать" не при сохранении комментария, а при отображении. Или вообще на клиенте, при помощи js.
Ответ написан
Комментировать
@ozornick
Замена тегов на свои. [url]http://allow.loc/pages/info/[/url]
Ну и проверить адрес parse_url, лмбо сделать относительный путь
Ответ написан
Ваш ответ на вопрос

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

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