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

Статус
В этой теме нельзя размещать новые ответы.

alex-bot

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

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

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

fclose($fout);
fclose($fin);
где-то примерно так
 
Вроде все так... но... не совсем, у меня на каждой строчке нужно сделать 5 замен на рандомные слова, а получилось, что на каждой строчке, макрос заменился на одно и тоже слово... т.е. рандомности нет?
 
Хех, я же не в курсе был, что их на строчке бывает несколько штук :)
PHP:
$key = file('keyword.txt');
$fin = fopen('content_in.txt', 'r');
$fout = fopen('content_out.txt', 'w');
while(!eof($fin)){
   $line = fgets($fin, 4096);
   $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)], $line, 1);
   return $line;
}
 
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);
	}
И все пошло поехало...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху