Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PHP] Скрипт фильтрации по словам 
:(
    Опции темы
viperson
Дата 14.4.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Здравствуйте!

Нужен скрипт кторый позволит фильтровать тест по конкретным словам.

Есть текстовый файл в котором находятся русские фразы по одной на строку input.txt,

Есть текстовый файл с русскими словами фильтрами filter.txt,

Необходимо чтобы скрипт удалил все фразы в input.txt содержащих слова в filter.txt

Если есть возможность, необходимо чтобы фильтрация не зависила от языка(рус, англ и тд)

Буду очень признателен.  smile 





PM   Вверх
enof
Дата 14.4.2009, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 2
Всего: 35



Код

$filter = explode(" ", file_get_contents("filter.txt"));
$pattern = "#^.*(?:".implode("|", $filter).").*$#mu";
$subj = file_get_contents("input.txt");
$subj = preg_replace($pattern, "", $subj); // В $subj очищенный текст.

PM MAIL ICQ Skype   Вверх
viperson
Дата 14.4.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Цитата(enof @ 14.4.2009,  18:26)
Код

<?
$filter = explode(" ", file_get_contents("filter.txt"));
$pattern = "#^.*(?:".implode("|", $filter).").*$#mu";
$subj = file_get_contents("input.txt");
$subj = preg_replace($pattern, "", $subj); // В $subj очищенный текст.
?>

выдает ошибку

Compilation failed: invalid UTF-8 string at offset 24 in Z:\home\localhost\www\rusfilter\index.php on line 5


Это сообщение отредактировал(а) viperson - 14.4.2009, 18:59
PM   Вверх
enof
Дата 14.4.2009, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 2
Всего: 35



Модификатор u уберите.
PM MAIL ICQ Skype   Вверх
viperson
Дата 14.4.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



я не знаю как это сделать так как не знаю что это такое
PM   Вверх
enof
Дата 14.4.2009, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 2
Всего: 35



Тогда может быть вам надо в центр помощи?
Выведите на экран получившийся шаблон и скиньте.
Код

echo $pattern;


Добавлено через 59 секунд
И еще, подразумевается, что слова в filter.txt разделены пробелом.
PM MAIL ICQ Skype   Вверх
viperson
Дата 14.4.2009, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Слова в filter.txt одиночные, то есть не разделены пробелом.

Warning: preg_replace() [function.preg-replace]: Compilation failed: invalid UTF-8 string at offset 24 in Z:\home\localhost\www\rusfilter\index.php on line 5
#^.*(?:url guest asp интернет магазин смс sms доска comment blog blogs phpbb send bbs message journal yabb клуб ipb товар topic регистрац регестрац безплатно бисплатно rapidshare files letitbit vipfiles www сайт site forum форум http : . + - / \ _ send thread чат рассказ расказ coment тема бесплатн купит что где игр комикс русск таганрог москв питер петер беларус россия самара омск челябинск киев уфа символик красноярск шоп дети зоо zoo саранск животн posting post владивосток новосибирск атрибут создать сообщение wap набережные челны перм новгород заказ телефон мебел истор обои отель ростов знакомств краснодар студи техник термин клан 3d сценари сесси ру com анекдот замок каталог стать тюмен стиль украина тула открыт казань гипс парсинг берлин аватар tube ссылк воронеж услуг стервятник вечеринк пылесос харьков школа пони тольят литератур отчет расшифровк свитч девайс волгоград снег рисован нижний тагил генеколог электр манг встреч практик читат юмор гипс берлин крым free станк досуг минск пони торрент torrent торент torent екатеринбург белгород промыван желуд для флэш flash ).*$#mu

Это сообщение отредактировал(а) viperson - 14.4.2009, 19:15
PM   Вверх
enof
Дата 14.4.2009, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 2
Всего: 35



viperson, Какие еще одиночные? Чем разделены друг от друга?
PM MAIL ICQ Skype   Вверх
viperson
Дата 14.4.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



одно слово на строку, поэтому без пробелов. Я расположил слова через пробел, тоже нет ни какого результата.

Я

Это сообщение отредактировал(а) viperson - 14.4.2009, 19:27
PM   Вверх
enof
Дата 14.4.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 2
Всего: 35



Код

$pattern = "#^.*(?:";
$f = fopen("filter.txt", "r");
$i = 0;
while(!feof($f))
{
    $a = preg_replace("#\r?\n#", "",preg_quote(fgets($f)));
    if($i++ == 0) $pattern .= "$a"; else $pattern .= "|$a";
}
$pattern .= ").*$#mx";
$subj = file_get_contents("input.txt");
$subj = preg_replace($pattern, "", $subj); // В $subj очищенный текст.

вот.

Если по слову на каждой строке, то значит слова разделены символом переноса строки. Так сложно сказать?
И в чем проявляется не работа скрипта?

Это сообщение отредактировал(а) enof - 14.4.2009, 19:33
PM MAIL ICQ Skype   Вверх
viperson
Дата 14.4.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Цитата(enof @ 14.4.2009,  19:32)
Код

$pattern = "#^.*(?:";
$f = fopen("filter.txt", "r");
$i = 0;
while(!feof($f))
{
    $a = preg_replace("#\r?\n#", "",preg_quote(fgets($f)));
    if($i++ == 0) $pattern .= "$a"; else $pattern .= "|$a";
}
$pattern .= ").*$#mx";
$subj = file_get_contents("input.txt");
$subj = preg_replace($pattern, "", $subj); // В $subj очищенный текст.

вот.

Если по слову на каждой строке, то значит слова разделены символом переноса строки. Так сложно сказать?
И в чем проявляется не работа скрипта?

ошибок не выдает, но и фильтрации не происходит
PM   Вверх
enof
Дата 14.4.2009, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 2
Всего: 35



Всмысле не происходит? Вы в файл пишите, или выводите куда потом?
PM MAIL ICQ Skype   Вверх
viperson
Дата 14.4.2009, 19:43 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



та никуда я не пишу. Я не понимаю в пхп. Дайте код, например чтобы писало в out.txt плиз 
PM   Вверх
skyboy
Дата 14.4.2009, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 5
Всего: 260



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 
PM MAIL   Вверх
enof
Дата 14.4.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 2
Всего: 35



viperson,  ###.  smile  Комментарий прочитайте на последней строке.
http://php.net/file_put_contents
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1042 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.