preg_replace_cellback в цикле

Sky_Flex

Новичок
preg_replace_cellback в цикле

вот код, смысл что в цикле вызывается функция preg_replace_cellback
в которой рандомно подставляется значение по заданной регулярке в тексте...

PHP:
$txt = 'Число1: {0|1|2|3|4|5|6|7|8|9|10|11|12}. Число2: {0|1|2|3|4|5|6|7|8|9|10|11|12}';
		
		
		for ($n=0; $n<10; $n++) {
			
                                    echo $n.' - ';
			$txt = preg_replace_callback('/\{(.*?)\}/si', 'rnd_txt', $txt);
			echo $txt.'<br>';
			
		}
		
		
		function rnd_txt($text) {
			static $i = 0;
                    # удалим лишние знаки
			$a = ereg_replace('\{', '', $text[$i]);
			$a = ereg_replace('\}', '', $a);
			# разрежим на куски
			$a = explode('|', $a);
			# выберем уникальное значение
			$a_rnd = array_rand($a);		
			# накрутим счетчик
			$i++;

			return $a[$a_rnd];
		}

но вместо ожидаемого в каждой итерации уникального значения получаю следующие:

0 - Число1: 5. Число2: 0
1 - Число1: 5. Число2: 0
2 - Число1: 5. Число2: 0
3 - Число1: 5. Число2: 0
4 - Число1: 5. Число2: 0
5 - Число1: 5. Число2: 0
6 - Число1: 5. Число2: 0
7 - Число1: 5. Число2: 0
8 - Число1: 5. Число2: 0
9 - Число1: 5. Число2: 0

Т.е. preg_replace_cellback запускается один раз при первом проходе цикла... а в следующих проходах подставляет уже сгенеренный текст...

Как же заставить ее генерировать уникальное значение в каждой итерации?
 

ksnk

прохожий
Notice: Undefined variable: a in ...

Алгоритм, хотя бы для себя поясни...
 

Sky_Flex

Новичок
отредактировал. сейчас работает.
алгоритм: из текста вырезать кусок {1|2|3|4} и заменить на что-о одно: 1 or 2 or 3 or 4. рандомно.
но все это в цикле нужно - чтобы генерировать уникальные как бы тексты.
пока генерятся одинаковые...

хм... похоже у меня просто таже переменная в цикле и выводилась...
т.е. правильно вот так:
PHP:
$text = preg_replace_callback('/\{(.*?)\}/si', 'rnd_txt', $txt);
echo $text.'<br>';
но все равно preg_replace_callback() запускаеся только один раз.. результат тепреь такой:
0 - Число1: 4. Число2: 2
1 - Число1: . Число2:
2 - Число1: . Число2:
3 - Число1: . Число2:
4 - Число1: . Число2:
5 - Число1: . Число2:
6 - Число1: . Число2:
7 - Число1: . Число2:
8 - Число1: . Число2:
9 - Число1: . Число2:
 

ksnk

прохожий
Ты изменяешь $txt в первом цикле + зачем-то вместо $text[0] написал $text[$i]...
 
Сверху