Чем сделать: замену макроса случайным словом из списка?

Тема в разделе "Тех. вопросы", создана пользователем alex-bot, 9 фев 2009.

Статус темы:
Закрыта.
  1. alex-bot

    alex-bot Nulled-Man

    Регистр.:
    4 май 2007
    Сообщения:
    497
    Симпатии:
    144
    Народ подскажите чем сделать замену макроса (изначально делал для РБ), на случайное слово из списка, слов около 100. Вроде все так просто, но блин RB с макросом [RANDKEYWORD] не стал заменять после 100-го, т.е. пока кеи были заменял потом, так и оставил как в шаблоне, потом попробовал [RANDLIST], уж этот то должен был сработать, но этого макроса хватило на ~ 200 замен.
    Перерыл весь TExtPipe, в нем тоже не нашел случайной замены. Вроде была еще прога по генерации ссылок? Может с ней можно?
    Да объем приличный, около 20к строк, а замен нужно сделать 150k... Что посоветуете чем можно это сделать?
     
  2. noIIIpera

    noIIIpera

    Регистр.:
    31 янв 2007
    Сообщения:
    283
    Симпатии:
    63
    Вставало видимо по причине нехватки памяти.
    PHP:
    $key file('keyword.txt');

    $fin fopen('content_in.txt''r');
    $fout fopen('content_out.txt''w');

    while(!
    eof($fin)){
       
    $line fgets($fin4096);
       
    $line str_replace("[RANDKEYWORD]"$key[mt_rand(0,sizeof($key)-1)], $line);
       
    fputs($fout$line);
    }

    fclose($fout);
    fclose($fin);
    где-то примерно так
     
    alex-bot нравится это.
  3. alex-bot

    alex-bot Nulled-Man

    Регистр.:
    4 май 2007
    Сообщения:
    497
    Симпатии:
    144
    Вроде все так... но... не совсем, у меня на каждой строчке нужно сделать 5 замен на рандомные слова, а получилось, что на каждой строчке, макрос заменился на одно и тоже слово... т.е. рандомности нет?
     
  4. noIIIpera

    noIIIpera

    Регистр.:
    31 янв 2007
    Сообщения:
    283
    Симпатии:
    63
    Хех, я же не в курсе был, что их на строчке бывает несколько штук :)
    PHP:
    $key file('keyword.txt');
    $fin fopen('content_in.txt''r');
    $fout fopen('content_out.txt''w');
    while(!
    eof($fin)){
       
    $line fgets($fin4096);
       
    $line replace_key($line);
       
    fputs($fout$line);
    }
    fclose($fout);
    fclose($fin);

    function 
    replace_key($line){
       GLOBAL 
    $key;
       
    preg_match_all('!\[RANDKEYWORD\]!iU'$line$item);
       for(
    $i=0$i<sizeof($item[1]); $i++)
          
    $line preg_replace('!\[RANDKEYWORD\]!iU'$key[mt_rand(0,sizeof($key)-1)], $line1);
       return 
    $line;
    }
     
    alex-bot нравится это.
  5. alex-bot

    alex-bot Nulled-Man

    Регистр.:
    4 май 2007
    Сообщения:
    497
    Симпатии:
    144
    noIIIpera - Спасибо большое за попытку помочь ;). Но твой второй вариант тоже не сделал замены, т.е. что нужно было...
    TAGS="[RANDLIST],[RANDLIST],[RANDLIST],[RANDLIST],[RANDLIST],[RANDLIST]"
    Заменить на что-то:
    TAGS="Market,Blogs,Decorating,Collection,Design,Company,Life"
    Во втором случае замена получилась лишь для первого макроса и потом на выходе еще добавлялась табуляция /n

    PS. Утром со свежими мозгами решил глянуть мой любимый РБ и вобщем проблемка нашлась почти сразу
    в run.php
    Код:
    for ($i=0; $i<100; $i++){
    		if (!strstr($myshab, "[RANDLIST]")) break 1;
    		$myshab=preg_replace("/\[RANDLIST\]/", $strochki[rand(0, $s_strochki)], $myshab, 1);
    	}
    
    заменил
    Код:
    for ($i=0; $i<[B]100000[/B]; $i++){
    		if (!strstr($myshab, "[RANDLIST]")) break 1;
    		$myshab=preg_replace("/\[RANDLIST\]/", $strochki[rand(0, $s_strochki)], $myshab, 1);
    	}
    
    И все пошло поехало...
     
Статус темы:
Закрыта.