Сделал пресет для сбора текста с некого сайта и столкнулся с тем, что при небольших размерах страницы всё работает как надо - нужный текст попадает весь в выражение "([^"]+?)" а если текст становится более нескольких десятков килобайт (ЭТО НОРМАЛЬНО, так и должно выделяться!) , то вообще выражение не отрабатывает, в логе появляется сообщение Template execute error: undef error - WHILE loop terminated (> 1000 iterations) Как обойти это ограничение?
Никаких ограничений в регулярном выражении на размер захватываемой строки нету. А указанная ошибка говорит о том, что у вас в шаблоне в цикле WHILE совершается (или теоретически может быть) более 1000 итераций. И выдается она, т.к. установлена защита от зацикливания, которое в свою очередь может привести к зависанию и т.п. проблемам. Попробуйте изменить логику в шаблоне таким образом, чтобы избежать зацикливания или выхода за установленный лимит итераций. Если не получится - пришлите в личку ваш пресет и запрос, на котором это воспроизводится.
Да, видимо тут в цикле while есть внутреннее ограничение, у меня так сделано [% max=p1.nam3.size; i=0 ; WHILE i < max; '"' _ p1.nam3.$i.name3 _ ";" _ '\n' ; i=i+1;END; %] подскажите, как переделать цикл без while ?
Видимо размер массива p1.nam3 больше 1000 Код: $p1.nam3.format('"$name3;\n') или Код: [% FOREACH item IN p1.nam3; '"' _ item.name3 _ ";\n"; END %]
Спасибо, но мне надо, чтобы цикл с переменной i был , там в цикле идет вывод НЕСКОЛЬКИХ массивов одинаковой длины WHILE i < max; '"' _ p1.nam3.$i.name3 _ ";" _ p1.nam4.$i.name4 _ '\n' ; то есть нужен цикл со счетчиком i