прошу совета - непонятное поведение регулярки при обрабоки большого объема даных

que_bunt

Новичок
прошу совета - непонятное поведение регулярки при обрабоки большого объема даных

Код:
#<a name=\"3\"></a>(.*?)<a name=\"[0-9]+\"></a>#is
если между <a name="3"></a> и <a name="[0-9]+"></a> небольшое количество символов (например 30-40к) то все ок, но если большое (100-150к символов) то регулярка не срабатывает


но при этом регулярка без ограничения жадности, тоесть
Код:
#<a name=\"3\"></a>(.*)<a name=\"[0-9]+\"></a>#is
срабатывает даже если всередине 100-150к символов


в чем проблема первой регулярки? как можна исправить?

буду благодарин за совет.
 

DiMA

php.spb.ru
Команда форума
почитай доку, чтобы увеличить лимит
и тогда, именно не жажный квантификатор, будет хавать больше текста

еще можно разделить текст в массив, например по </a>, а потом уже реги
 

que_bunt

Новичок
DiMA, я просмотрел документацию еще до создания, но нигде про лимит для не жадных квантификаторов не видел, не говоря уже про увеличение лимита.

не мог би ты указать как конкретно увеличить лимит?
или дай ссылку на конкретный документ в котором это описано.

спасибо.
 

DiMA

php.spb.ru
Команда форума
я не помню, за тебя искать не буду, этот вопрос обсуждается в форуме каждый месяц
 

que_bunt

Новичок
%)

я просмотрел топики связаные с жадностью, нигде упоминаний про какой-либо лимит не жданых квантификаторов не увидел.
дай хоть наводку как искать... ключевое слово что-ли..

и ты уверен что правильно понял вопрос? просто dimagolov, который первым, кажеться не совсем понял про что я спрашивал.
 

vovanium

Новичок
что-то из этого покрути в конфиге, как раз по умолчанию 100000

pcre.backtrack_limit
pcre.recursion_limit
 

DiMA

php.spb.ru
Команда форума
que_bunt
ты то сам уверен, что правильно понял указание к решению?
иди увеличь буфер для регах
 

que_bunt

Новичок
vovanium монстр, запомнить такие настройки, тем более введенные только с PHP версии 5.2.0 не легко запомнить.

большое человеческое спасибо! :)
 
Сверху