|
|
|
| Хочу сделать антимат, собрал словарь слов, где каждое слово с новой строки, потом запятая и на что его менять.
Файл имеет такую структуру:
ху*, мужской орган
пи, пикалка
наху, далеко
|
Неполучается написать функцию которая быстро ищет соотвествие в файле и заменяет. Подскажите быстрый перебор и замену. | |
|
|
|
|
|
|
|
для: mabelrod
(26.03.2013 в 21:16)
| | регулярные выражения. еще как вариант strtr
но вообще, идея плохая. во-первых, вряд ли у вас получится написать хороший матфильтр, который например будет корректно обрабатывать такие слова, как "гребет", "корабля", "расслабляться" и т.п (их много). во-вторых, велик и могуч русский язык, не надо над ним издеваться. ну и в-третьих, думаю некоторым пользователем это не понравится | |
|
|
|
|
|
|
|
для: 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 массива. | |
|
|
|
|
|
|
|
для: mabelrod
(26.03.2013 в 21:16)
| | Никак не сделаете! Вариантов написания одного слова множество - всех не учтете | |
|
|
|
|
|
|
|
для: mihdan
(27.03.2013 в 11:14)
| | Если этим заниматься и пополнять базу, плюс добавить очистку пробелов и мусорных знаков, то возможно.
Но это длительная и кропотливая работа.
Сразу, конечно, оно не заработает на 100%, но со временем добиться 99% вполне реально. | |
|
|
|
|
|
|
|
для: 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'; | |
|
|
|