|
|
|
| Имееться массив слов
слово1 | слово2 | слово3
Имееться текст, к котором встречаються эти слова...
Нужно что:
если встречаеться "слово1" то его заменить на "слово2" или "слово3" (выбирать вариант случайным образом)
если встречаеться "слово2" то его заменить на "слово1" или "слово3" (выбирать вариант случайным образом)
если встречаеться "слово3" то его заменить на "слово2" или "слово3" (выбирать вариант случайным образом)
Заранее благодарен за помощь. | |
|
|
|
|
|
|
|
для: Leon_uman
(26.06.2007 в 16:17)
| |
<?php
$text = '';
$word = array();
for($i=0;$i<count($word);$i++):
$replace = $word[rand(0,count($word)-1)];
while($replace == $word[$i])
$replace = $word[rand(0,count($word)-1)];
$text= str_replace($word[$i],$replace,$text);
endfor;
?>
|
может есть более элегантное решение ... но счас у меня голова не варит :) | |
|
|
|
|
|
|
|
для: CrazyAngel
(26.06.2007 в 16:26)
| | а тут не будет так, что "слово1" замениться на "слово1"? | |
|
|
|
|
|
|
|
для: Leon_uman
(26.06.2007 в 16:45)
| | Вот этот кусок этого не позволяет
<?php
while($replace == $word[$i])
$replace = $word[rand(0,count($word)-1)];
?>
|
| |
|
|
|
|
|
|
|
для: CrazyAngel
(26.06.2007 в 16:47)
| | спасибо огромное! мега респект!
но я всетаки не пойму чтото.. вот код который есть
function word_filter($source) {
@setlocale(LC_CTYPE, array("ru_RU.CP1251", "ru_SU.CP1251", "ru_RU.KOI8-r", "ru_RU", "russian", "ru_SU", "ru"));
$all_words = file(ENGINE_DIR.'/data/wordfilter.db.php');
if (count($all_words)) {
foreach($all_words as $word_line)
{
$word_arr = explode("|", $word_line);
$find[] = "#(".$word_arr[1].")#i";
$replace[] = $word_arr[2];
}
$source = preg_replace($find,$replace,$source);
}
return $source;
}
|
это функция замены слов.. но она работаеть только для замены одного слова но другое...
/data/wordfilter.db.php вот в этом файле - примерно такое
1182853326|словоо|направлять|||
1182853327|слово|невыносимый|||
1182853328|слов|анафемский|||
|
цифры - это просто айдишник. дальше идет искомое слово, а потом то слово на какое его нужно заменить.
а мне не так надо.. мне надо просто, чтоб
1182853328|анафемский невыносимый каторжный|||
|
записи будут в таком формате. тоесть чтоб одно слово заменялось на другое (выборочно) | |
|
|
|