Регулярка. Картинку можно. ссылку нельзя.

123 4
[Удален]
1811

Регулярка. Картинку можно. ссылку нельзя.

Есть такая структура:

if (preg_match('/http/i', $node->body) || preg_match('/www/i', $node->body)){form_set_error('body', 'Ваше сообщение очень похоже на спам — слишком много ссылок!');}

Сейчас, как видно, оно запрещает любые ссылки. Любой код или текст где есть http или www

Как бы разрешить картинки подобные:

<img src="http://www.gggg.ru/uuu.jpg">

???

Сейчас они не проходят потому что есть запрет на http в тексте

Спасибо.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

<img src="//%77%77%77.gggg.ru/uuu.jpg">

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
[Удален]
#2
Оптимизайка:
<img src="//%77%77%77.gggg.ru/uuu.jpg">

И куда это деть?

---------- Добавлено 03.06.2017 в 03:18 ----------

Вот так вроде работает:

/(?<!src=")http/

но пока ещё не точно

tommy-gung
На сайте с 22.11.2006
Offline
287
#3

это не "куда делать", а пример того, что внешняя ссылка может быть без указания протокола

Здесь не могла быть ваша реклама
[Удален]
#4
tommy-gung:
это не "куда делать", а пример того, что внешняя ссылка может быть без указания протокола

А зачем мне это?

Возможно это гениальный пример. возможно.

Только зачем мне это в контексте исходного вопроса?

---------- Добавлено 03.06.2017 в 15:11 ----------

Ответ вот:

/(?<!src=")http/

И всё работает. пример:

http://v-evropu.ru/node/184

Осторожно. Сразу 18+ - матюки

ZT
На сайте с 24.07.2012
Offline
39
#5

Так се, если честно, проверка.

Действительно, ссылку можно и без протокола указывать. Да и www не обязательно.

<img class="test" src=" не пройдёт.

Кавычки могут быть одинарными, да и вообще без кавычек можно.

Можно попробовать распарсить текст как HTML каким-нибудь парсером вроде этого

http://simplehtmldom.sourceforge.net/manual.htm


$html = str_get_html($node->body);
$links = $html->find('a');
foreach($links as $a) {
if(preg_match('/^(http(s)?:)?\/\//', $a->href)) {
form_set_error('body', 'Ваше сообщение очень похоже на спам — слишком много ссылок!');
}
}
[Удален]
#6
Zloy_Tip:
Так се, если честно, проверка.

Это написано для Хука Друпала? Если нет - тогда зачем мне это?

S
На сайте с 30.09.2016
Offline
469
#7
miltorg:
Это написано для Хука Друпала?

А где Вы написали, что это нужно для хука Друпала?

miltorg:
зачем мне это?

Действительно, зачем Вам это?

Хотя вопрос, конечно же, несложный - надо просто аккуратно составить регулярку.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
[Удален]
#8
Оптимизайка:
<img src="//%77%77%77.gggg.ru/uuu.jpg">

А. Понял. заставить пользователя убирать протокол перед вставкой адреса картинки.

Я думаю что это слишком сложно для пользователя.

---------- Добавлено 03.06.2017 в 20:30 ----------

Sitealert:
А где Вы написали, что это нужно для хука Друпала?

В самом начале я написал что "есть структура". Работающая структура. У ней ещё там куча проверок кроме http

Именно это и подразумевает что структура должна остаться.

Я думал что это понятно всем.

D
На сайте с 14.01.2007
Offline
153
#9

а вас "взломал". где моя bug bounty?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#10

Добавил ссылки.

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий