|
|
|
| Можно ли в проверке текста объявления сделать защиту от реклам сайтов? Например чтоб не выводило текст www, wap, web, http://, www.st, wap.st.su | |
|
|
|
|
|
|
|
для: Санька
(21.11.2007 в 04:45)
| | можно только это нужно идти в раздел регулярних выражений... | |
|
|
|
|
|
|
|
для: Санька
(21.11.2007 в 04:45)
| | В самом простейшем варианте можно поставить проверки вида
<?php
if(strpos($message, "www") !== false) exit("Недопустимый формат сообщения");
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(21.11.2007 в 10:47)
| | А по сложней проверки не знаете? | |
|
|
|
|
|
|
|
для: Санька
(21.11.2007 в 14:49)
| | форум регулярных выражений там подскажут...
з.ы. модер мог бы уже и переместить туда тему автоматом :) | |
|
|
|
|
|
|
|
для: KPETuH
(21.11.2007 в 14:59)
| | Вот и я думаю, надо бы :) | |
|
|
|
|
|
|
|
для: Санька
(21.11.2007 в 15:46)
| |
<?
echo $message = preg_replace('#(http://)?[a-z\-]{2,}\.[a-z\-]{2,}[a-z\-\_\.\/\?\=\&]*#iS', '[!_здесь могла быть ваша реклама_!]', $message) ;
|
рубит даже nm.ru :) | |
|
|
|
|
|
|
|
для: exp
(22.11.2007 в 02:32)
| | И не только это.Зарубит также фразы "... используйте массив POST.GET здесь совсем не подходит... ","... на Вашей index.html я насчитал аж 5 ошибок ! ... " и еще кучу других (просто эти первые,которые пришли мне на ум)
Зато "ВСЕ БЕГОМ НА lamer. kmx. ru !!!" пройдет на ура :) | |
|
|
|
|
|
|
|
для: Ralph
(22.11.2007 в 11:15)
| | вот именно товарищи!! Так и нужно делать, что народ советует. Поверьте печальному опыту. Моего клиента сайт просто заваливали отправками сообщений через сайт клиента с содержанием большого списка ссылок. После того, как я поставил поиск слов "http" и "www" и при нахождении данных слов в тексте, сообщение просто не отсылалось никуда. И "О чудо" через неделю все прекратилось. | |
|
|
|
|
|
|
|
для: 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]+)*)?
|
зы уберите пробелы
[поправлено модератором] | |
|
|
|
|
|
|
|
для: 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 в 15:44)
| | не срубает http://82.208.89.164/hosting/index.php | |
|
|
|
|
|
|
|
для: 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) то скорее всего имеем дело со спамером. Опять же, как четкое правило использовать нельзя, должно вносить свой вклад в общее "число". Мой ник, например, неоднократно был автозабанен за нечитабельность.
Этих правил тебе будет достаточно, чтобы отфильтровать все лишнее. Не хватит - включай моск. | |
|
|
|
|
|
|
|
для: Ralph
(22.11.2007 в 11:15)
| | Так как правильно прописать код? Я так понял выше написанный код не коректный! | |
|
|
|