Neden preg_match_all kadar çok karakterden sonra kaka yapar?

0 Cevap php

Ben preg_match_all deyimi ile bir sorun yaşıyorum. Belli bir uzunluk hep birlikte çalışma durduruldu geçti sonra ani bir makale ama tüm yazarak oldum gibi mükemmel çalışıyor. Bu sadece anything pek çok karakterden sonra yapmaz fonksiyonu ile bilinen bir sorun var mı?

$number = preg_match_all("/(<!-- ([\w]+):start -->)\n?(.*?)\n?(<!-- \\2:stop -->)/s", $data, $matches, PREG_SET_ORDER);

Bu güzel tüm bu zaman çalışma ve diğer sayfalar için çalışıyor, ama bu yazı belli bir uzunluğa geçti bir kere, puf, bu yazı için çalışmayı durdurdu oldu. Ben metin uzun blokları için çalışmasını sağlamak için kullanabileceğiniz başka bir çözüm var mı? Işleniyor makale (boşluklar dahil) uzunluğu yaklaşık 33.000 karakterdir.

Ben daha önce böyle bir soru sordum ama ben aslında test asla tek bir cevabı var. Ben önceki zaman sadece belirli bir senaryo için etrafında almak için başka bir yol buldum, ama hepsi tek bir makale, çünkü bu sefer etrafında almak için hiçbir yolu yoktur. Ben pcre.backtrack_limit değiştirmeyi denedim ve pcre.recursion_limit kesinlikle hiçbir etkisi bile 500.000 kadar. Bu oluştuğunu ve ne ben bile bu metin büyük blokları için çalışmaya devam almak için ne yapabilirim neden başka bir fikir var mı? A 30.000 karakter sınırı sadece 5,000-6,000 kelime (bu yaklaşık 5700 olan) var, biraz düşük gibi görünüyor. Bu metin iki ayrı blokta ise o başlangıcını bulmak ve durmayacağım çünkü parçalanıyor burada gerçekten bir seçenek değildir.

0 Cevap