Sky_Flex
Новичок
preg_replace_cellback в цикле
вот код, смысл что в цикле вызывается функция preg_replace_cellback
в которой рандомно подставляется значение по заданной регулярке в тексте...
но вместо ожидаемого в каждой итерации уникального значения получаю следующие:
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 запускается один раз при первом проходе цикла... а в следующих проходах подставляет уже сгенеренный текст...
Как же заставить ее генерировать уникальное значение в каждой итерации?
вот код, смысл что в цикле вызывается функция 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 запускается один раз при первом проходе цикла... а в следующих проходах подставляет уже сгенеренный текст...
Как же заставить ее генерировать уникальное значение в каждой итерации?
