PHP функция замены прямых ссылок на JS с подтверждением перехода.
Содержание:
- Описание идеи замены прямых ссылок в тексте страницы.
- PHP функция замены прямых внешних ссылок
- JS код подтверждения перехода ро ссылке с применением SweetAlert.
- Стилизация конструкции перехода под привычную ссылку
- DEMO
При публикации контента на сайте часто требуется чтобы прямые ссылки в тексте заменялись на javascript конструкции, осуществляющие переход по внешней ссылке с предупреждением и подтверждением о таком действии. Такая необходимость обычно появляется при запуске комментариев на сайте, где пользователи естественно будут выкладывать ссылки на сторонние ресурсы в качестве подтверждающих источников или по любой другой мотивации. Можно просто отфильтровать ссылки удалением тегов через функцию strip_tags($html). Такие методы скорее всего сильно ограничат возможности пользователей по комментированию, а часть из них просто откажется поддерживать диалог. Но и благотворительность, в форме раздачи бесплатных прямых ссылок, крайне расточительна и даже опасна - спамеры, как пить дать, в два счёта сделают линкопомойку. Исходя из пожеланий - дать возможность пользователям ставить ссылки на внешние ресурсы и не отдавать за красивые слова репутацию сайта, появилась задача из следующих составляющих:
- Заменить ссылки на строковой тег span и
aнкорпри клике на который осуществиться программный переход на внешний ресурс. - Перед переходом на внешний ресурс будет выведено диалоговое окно для подтверждения или отказа перехода.
- Новая конструкция должна иметь стилистику обычных ссылок.
Сначала пишем PHP функцию замены прямых внешних ссылок:
JS код подтверждения перехода по ссылке с применением SweetAlert.
//Подключаем библиотеку sweetalert
<script src="lib/sweetalert/sweetalert2.all.min.js"></script>
//Подключаем стили sweetalert
<link rel='stylesheet' href='lib/sweetalert/sweetalert2.min.css' />
<script type="text/javascript">
function goRelink(url){
Swal.fire({//вызываем sweetalert окно
imageUrl: './img/exclamation_mark_a-90.gif', //иконка предупреждения
imageHeight: 90,
imageAlt: 'Внимание!',
title: 'Вы переходите по внешней ссылке!',
showDenyButton: true,
showCancelButton: true,
confirmButtonText: 'Перейти',
cancelButtonText:'Не переходить',
}).then((result) => {
if (result.isConfirmed) {
window.open(url, '_blank'); //осуществляем переход с новой вкладкой
Swal.fire('До свидания!', '', 'success')
} else if (result.dismiss === Swal.DismissReason.cancel) {
Swal.fire({
icon: 'info',
title: 'Переход отменён!',
showConfirmButton: false,
timer: 1500
})
}
})
}
</script>ПАМЯТКА! Обязательно скачивайте только проверенный дистрибутив библиотеки SweetAlert. Замечено заражение файлов политической рекламой. Или можете скачать эту рабочую версию.
Осталось только немного стилизировать новую конструкцию.
/* Стили внешних ссылок */
.goRelink{
color: blue;
cursor: pointer;
border-bottom: 1px dashed blue;
}
.goRelink:hover{
color: red;
border-bottom: 1px dashed red;
}

