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

Форум PHP

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

 

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

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

тема: Как сделать антимат ?
 
 автор: mabelrod   (26.03.2013 в 21:16)   письмо автору
 
 

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

Файл имеет такую структуру:

ху*, мужской орган
пи, пикалка
наху, далеко


Неполучается написать функцию которая быстро ищет соотвествие в файле и заменяет. Подскажите быстрый перебор и замену.

  Ответить  
 
 автор: psychomc   (26.03.2013 в 22:56)   письмо автору
 
   для: mabelrod   (26.03.2013 в 21:16)
 

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

  Ответить  
 
 автор: Sfinks   (27.03.2013 в 10:55)   письмо автору
 
   для: mabelrod   (26.03.2013 в 21:16)
 

Функция str_replace() может принимать первым и вторым аргументом массивы что и на что менять.
Функция file() загружает файл в переменную, разбивая его построчно в массив.

Соответственно самым простым по написанию было бы иметь 2 файла. Один -что менять, второй -на что менять. И чтобы они построчно соответсвовали друг другу. Тогда просто:
<?php
  $a 
file('a.txt');
  
$b file('b.txt');
  
$s str_replace$a$b$s );
?>
но такие 2 файла будет не очень удобно составлять.

Ваш же файл можно загрузить той же функцией file() и потом в цикле разбить на те же 2 массива.

  Ответить  
 
 автор: mihdan   (27.03.2013 в 11:14)   письмо автору
 
   для: mabelrod   (26.03.2013 в 21:16)
 

Никак не сделаете! Вариантов написания одного слова множество - всех не учтете

  Ответить  
 
 автор: Sfinks   (27.03.2013 в 11:27)   письмо автору
 
   для: mihdan   (27.03.2013 в 11:14)
 

Если этим заниматься и пополнять базу, плюс добавить очистку пробелов и мусорных знаков, то возможно.
Но это длительная и кропотливая работа.
Сразу, конечно, оно не заработает на 100%, но со временем добиться 99% вполне реально.

  Ответить  
 
 автор: mister_pipin   (31.03.2013 в 20:39)   письмо автору
 
   для: mabelrod   (26.03.2013 в 21:16)
 

# выражения, которые где угодно считаются матом
$f_pregmat='~'.
'[nн][иеie][hхx][уyu][йyяij]|'.
'[hхx][уyu][eеЁ][tlvлвт]|'.
'[hхx][уyu][йyijoeоеёЁ]+[vwbв][oiоы]|'.
'[pп][ieие][dдg][eaoеао][rpр]|'.
'[scс][yuу][kк][aiuаи]|'.
'[scс][yuу][4ч][кk]|'.
'[3zsз][aа][eiе][bpб][iи]|'.
'[^н][eе][bpб][aа][lл]|'.
'fuck|xyu|хуй|'.
'[pп][iи][zsз3сs][dд][аеуоaeuo]|'.
'[z3ж]h?[оo][pп][aаyуыiеe]'.
'~si';

# сложные слова, типа "оскорблять", писать с пробелом перед словом
$f_pregmat2='~'.
' [hхx][уyu][йyяij]|'.
' л *о *х |'.
' [бb6][лl]([яy]|ay)|'.
' [eiе][bpб][iи]|'.
' [eiе][bpб][aeаеёЁ][tlnтлн]|'.
' п *и *з *д|'.
' м *у *д *а|'.
' залуп'.
'~si';

  Ответить  
Rambler's Top100
вверх

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