VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Регулярное выражение для хака скрытия ссылок от гостей
0
Подскажите, пожалуйста, регулярное выражение, заменяющее код типа [_url=http://postimage.org/image/vbus0sqlv/][_img]http://s5.postimage.org/vbus0sqlv/image.jpg[/img][/url] на содержимое между тэгами [img].
Имеющийся код модуля хака:
PHP Code:
if ($this->registry->options['hlfg_global'])
{
$groups = explode(',',$this->registry->options['hlfg_groups']);
if ($this->registry->options['hlfg_posts'] AND !$this->registry->userinfo['userid'] OR $this->registry->options['hlfg_posts'] AND (is_member_of($this->registry->userinfo, $groups) OR $groups[0] == 0))
{
if (!$forum['forum_hlfg'])
{
$this->post['message'] = preg_replace("!<a[^>]*(http|www|mailto)(.*)</a>!siU", $vbphrase[nolink], $this->post['message']);
$this->post['message'] = preg_replace("!mailto:(.+\.*.)!siU", $vbphrase[nolink] . '<', $this->post['message']);
}
}
}
P.S. Все, что мне нужно от этого хака - это скрыть от некоторых групп в сообщениях картинку-ссылку, но оставить миниатюру в bb-коде [img].
@Orfo
Знаток
Join Date: Jan 2008
Posts: 655
Версия vB: 3.8.x
Reputation:
Knowing 263
Репутация в разделе: 223
1
Имеем:
[url=http://postimage.org/image/vbus0sqlv/][img]http://s5.postimage.org/vbus0sqlv/image.jpg[/img][/url]
Хотим получить:
[img]http://s5.postimage.org/vbus0sqlv/image.jpg[/img]
Имеющийся код модуля хака:
Quote:
Originally Posted by logi
Имеющийся код модуля хака:
На каком хуке "висит" этот модуль? (postbit_display_complete или подобный)
Quote:
Originally Posted by logi
А как это интегрировать в строку?
Примерно так, возможны ошибки на боевом форуме не проверял. Онлайн сервис для пыток.
PHP Code:
if ($this->registry->options['hlfg_global'])
{
$groups = explode(',',$this->registry->options['hlfg_groups']);
if ($this->registry->options['hlfg_posts'] AND !$this->registry->userinfo['userid'] OR $this->registry->options['hlfg_posts'] AND (is_member_of($this->registry->userinfo, $groups) OR $groups[0] == 0))
{
if (!$forum['forum_hlfg'])
{
if (is_member_of($this->registry->userinfo, array(1,2,3))) {
// 1,2,3 группы которым не будут доступны ссылки на изображения, вписываем свои
$this->post['message'] = preg_replace("!<a[^>]*(http|www|mailto).*[^>]*>(<img [^>]+?>)<\/a>!siU", "\\2", $this->post['message']);
// заменит все <a href="" ...><img scr="" ...></a> на <img scr="" ...> точки это возможные атрибуты тегов
}
$this->post['message'] = preg_replace("!<a[^>]*(http|www|mailto)(.*)</a>!siU", $vbphrase[nolink], $this->post['message']);
$this->post['message'] = preg_replace("!mailto:(.+\.*.)!siU", $vbphrase[nolink] . '<', $this->post['message']);
}
}
}
@logi
Знаток
Join Date: Sep 2009
Location: Россия, Москва
Posts: 561
Версия vB: 3.8.4
Пол:
Reputation:
Knowing 264
Репутация в разделе: 159
0
SMak044, не работает, как ни крути.
Orfo, а вот это самое то - ни убавить, ни прибавить: $this->post['message'] = preg_replace("!<a[^>]*(http|www).*[^>]*>(<img [^>]+?>)<\/a>!siU", "\\2", $this->post['message']); Спасибо огромное!
Да, на postbit_display_complete. Модифицируемый под свои нужды хак - этот.
@logi
Знаток
Join Date: Sep 2009
Location: Россия, Москва
Posts: 561
Версия vB: 3.8.4
Пол:
Reputation:
Knowing 264
Репутация в разделе: 159
0
Orfo, еще вопрос...
Некоторые фотохостинги для того, чтобы идущие подряд миниатюры изображений располагались через пробел, вставляют в код картинки пробел перед [img].
Например: [ur*l=http://postimage.org/image/vbus0sqlv/] [im*g]http://s5.postimage.org/vbus0sqlv/image.jpg[/img][/url]
В таких случаях наше с вами регулярное выражение не срабатывает, и миниатюра остается кликабельной. Когда я завожу пробел в выражение: ( <img [^........ это срабатывает, но тогда идет насмарку первый вариант.
Возможно ли добавить сюда условие "с пробелом/без пробела перед [img]"?
Что есть и работает сейчас: $this->post['message'] = preg_replace("!<a[^>]*(http|www).*[^>]*>(<img [^>]+?>)<\/a>!siU", "\\2", $this->post['message']);
logi добавил 28.01.2012 в 01:05
Вопрос решен самостоятельно: