Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Защита от реклам сайтов
 
 автор: Санька   (21.11.2007 в 04:45)   письмо автору
 
 

Можно ли в проверке текста объявления сделать защиту от реклам сайтов? Например чтоб не выводило текст www, wap, web, http://, www.st, wap.st.su

   
 
 автор: KPETuH   (21.11.2007 в 05:54)   письмо автору
 
   для: Санька   (21.11.2007 в 04:45)
 

можно только это нужно идти в раздел регулярних выражений...

   
 
 автор: cheops   (21.11.2007 в 10:47)   письмо автору
 
   для: Санька   (21.11.2007 в 04:45)
 

В самом простейшем варианте можно поставить проверки вида
<?php
  
if(strpos($message"www") !== false) exit("Недопустимый формат сообщения");
?>

   
 
 автор: Санька   (21.11.2007 в 14:49)   письмо автору
 
   для: cheops   (21.11.2007 в 10:47)
 

А по сложней проверки не знаете?

   
 
 автор: KPETuH   (21.11.2007 в 14:59)   письмо автору
 
   для: Санька   (21.11.2007 в 14:49)
 

форум регулярных выражений там подскажут...

з.ы. модер мог бы уже и переместить туда тему автоматом :)

   
 
 автор: Санька   (21.11.2007 в 15:46)   письмо автору
 
   для: KPETuH   (21.11.2007 в 14:59)
 

Вот и я думаю, надо бы :)

   
 
 автор: exp   (22.11.2007 в 02:32)   письмо автору
 
   для: Санька   (21.11.2007 в 15:46)
 

<?
echo $message preg_replace('#(http://)?[a-z\-]{2,}\.[a-z\-]{2,}[a-z\-\_\.\/\?\=\&]*#iS''[!_здесь могла быть ваша реклама_!]'$message) ; 

рубит даже nm.ru :)

   
 
 автор: Ralph   (22.11.2007 в 11:15)   письмо автору
 
   для: exp   (22.11.2007 в 02:32)
 

И не только это.Зарубит также фразы "... используйте массив POST.GET здесь совсем не подходит... ","... на Вашей index.html я насчитал аж 5 ошибок ! ... " и еще кучу других (просто эти первые,которые пришли мне на ум)
Зато "ВСЕ БЕГОМ НА lamer. kmx. ru !!!" пройдет на ура :)

   
 
 автор: Alex Boxgorn   (22.11.2007 в 11:39)   письмо автору
 
   для: Ralph   (22.11.2007 в 11:15)
 

вот именно товарищи!! Так и нужно делать, что народ советует. Поверьте печальному опыту. Моего клиента сайт просто заваливали отправками сообщений через сайт клиента с содержанием большого списка ссылок. После того, как я поставил поиск слов "http" и "www" и при нахождении данных слов в тексте, сообщение просто не отсылалось никуда. И "О чудо" через неделю все прекратилось.

   
 
 автор: udpn   (23.11.2007 в 12:20)   письмо автору
 
   для: Alex Boxgorn   (22.11.2007 в 11:39)
 

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


\b((ftp|https?)://[-\w]+(\.\w[-\w]*)+|(?i: [a-z0-9] (?:[-a-z0-9]*[a-z0-9])? \. )+(?-i: com\b|edu\b|biz\b|gov\b|int\b|info\b|mil\b|net\b|org\b|[a-z][a-z]\b))( : \d+ )?(/[^;"'<>\[\]{}\s\x7F-\xFF]*(?:[.,?]+ [^;"'\[\]<>(){}\s\x7F-\xFF]+)*)?

зы уберите пробелы

[поправлено модератором]

   
 
 автор: exp   (23.11.2007 в 15:44)   письмо автору
 
   для: udpn   (23.11.2007 в 12:20)
 

так и не смог запустить это выражение из книги . не пойму как это на пхп должно выглядеть
но там опирается на http что уже некоторыен рекламеры могут и не ставить )
и русские буквы тоже \w
на рег.выражениях нельзя предугадать что являетвся рекламой а что нет :)

<?

$message 
'<ul>
test2.ru -ok
http://test2.ru -ok
https://security.test2.ru -ok
в.настройках точка доступа (APN) internet.mts.ru -тоже срубит
nm.ru -ok
index.php index.html 
index.pl - тоже срубает
и все такие комбинации slovo.dve bukvy
;

$pattern '#(https?://)?[a-z][0-9a-z\-]+\.([a-z][0-9a-z\-\.]+)?\b(com|edu|biz|gov|int|info|mil|net|org|moby|[a-z]{2})\b[^\s]*#iS';


echo 
$message preg_replace($pattern'[!_здесь могла быть ваша реклама_!]'$message) ; 


   
 
 автор: exp   (23.11.2007 в 16:06)   письмо автору
 
   для: exp   (23.11.2007 в 15:44)
 

не срубает http://82.208.89.164/hosting/index.php

   
 
 автор: udpn   (25.11.2007 в 14:02)   письмо автору
 
   для: exp   (23.11.2007 в 15:44)
 

На бирже работало ))

Даже без регулярных выражений компьютер НЕ ВСЕГДА сможет отличить рекламу от не-рекламы. Более, это не всегда сможет сделать даже человек...

versus.com - это линк или ком-файл? сейчас конечно ком файлы не используются, но ведь это только пример, не так ли?

Необходимо написать нечеткий фильтр (релевантность к линку - некотрое число, если оно превышакт некоторый порог - то это точно линк), а также усложнить его вероятностно (иногда отсеиваем так, иногда иначе). Однако, это выходит далеко за рамки этого обсуждения )

Несколько эвристических правил:
1) http(s) или ftp - всегда адрес, остается только извлечь оставшуюся его часть.
2) www - очень осторожно, бывает www6 или еще что-нибудь подобное
3) / - либо линк, либо путь в никсах
4) bukvocyfra.abc - если после точки идет 3 символа и они не входят в список трехбуквенных доменов, то это файл. В остальных случаях - скорее всего домен.
Наверное, домен Info требует особого уважения.
Из другой оперы:
5) повторения одного и того же чего-то похожего на линк 2-3 раза в одном сообщении. Стандартное спамерное сообщение: Посещайте abc.ru траляля Посещайте abc.ru
6) проверrf имени юзера.
а) Вычисление чарсетов, в которых лежит имя пользователя (есть латиница, цифры итп)
б) Проверка распределения символов внутри этих чарсетов. Если оно близко к равновероятному (Rnd) то скорее всего имеем дело со спамером. Опять же, как четкое правило использовать нельзя, должно вносить свой вклад в общее "число". Мой ник, например, неоднократно был автозабанен за нечитабельность.

Этих правил тебе будет достаточно, чтобы отфильтровать все лишнее. Не хватит - включай моск.

   
 
 автор: Санька   (22.11.2007 в 20:56)   письмо автору
 
   для: Ralph   (22.11.2007 в 11:15)
 

Так как правильно прописать код? Я так понял выше написанный код не коректный!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования