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

Форум PHP

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

 

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

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

тема: Замено слова из массива
 
 автор: Leon_uman   (26.06.2007 в 16:17)   письмо автору
 
 

Имееться массив слов
слово1 | слово2 | слово3
Имееться текст, к котором встречаються эти слова...
Нужно что:
если встречаеться "слово1" то его заменить на "слово2" или "слово3" (выбирать вариант случайным образом)
если встречаеться "слово2" то его заменить на "слово1" или "слово3" (выбирать вариант случайным образом)
если встречаеться "слово3" то его заменить на "слово2" или "слово3" (выбирать вариант случайным образом)

Заранее благодарен за помощь.

   
 
 автор: CrazyAngel   (26.06.2007 в 16:26)   письмо автору
 
   для: 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)];
    
$textstr_replace($word[$i],$replace,$text);    
endfor;
?>

может есть более элегантное решение ... но счас у меня голова не варит :)

   
 
 автор: Leon_uman   (26.06.2007 в 16:45)   письмо автору
 
   для: CrazyAngel   (26.06.2007 в 16:26)
 

а тут не будет так, что "слово1" замениться на "слово1"?

   
 
 автор: CrazyAngel   (26.06.2007 в 16:47)   письмо автору
 
   для: Leon_uman   (26.06.2007 в 16:45)
 

Вот этот кусок этого не позволяет

<?php
while($replace == $word[$i])
        
$replace $word[rand(0,count($word)-1)]; 
?>

   
 
 автор: Leon_uman   (26.06.2007 в 17:01)   письмо автору
 
   для: 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|анафемский невыносимый каторжный|||

записи будут в таком формате. тоесть чтоб одно слово заменялось на другое (выборочно)

   
Rambler's Top100
вверх

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