Есть ли ограничение на размер выделяемого регулярным выражением "([^"]+?)"

Gorn

A-Parser Enterprise License
A-Parser Enterprise
Сделал пресет для сбора текста с некого сайта и столкнулся с тем, что при небольших размерах страницы всё работает как надо - нужный текст попадает весь в выражение
"([^"]+?)"
а если текст становится более нескольких десятков килобайт (ЭТО НОРМАЛЬНО, так и должно выделяться!) , то вообще выражение не отрабатывает, в логе появляется сообщение

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 ?
 
Спасибо, но мне надо, чтобы цикл с переменной i был ,
там в цикле идет вывод НЕСКОЛЬКИХ массивов одинаковой длины
WHILE i < max;
'"' _ p1.nam3.$i.name3 _ ";" _ p1.nam4.$i.name4 _ '\n' ;
то есть нужен цикл со счетчиком i
 
Последнее редактирование:
Код:
[% max = p1.nam3.size - 1;
FOREACH i IN [0..max];
   ...
END %]
 
Назад
Верх