Ben HTML oluşan bir dize maç için çalışılıyor. Temelde bu kadar benzerlik bir çok dizesinde olduğu bir resim galerisi. Orada dize <dl> etiketleri bir yeri vardır, ama ben bir </div> önce gelen son <dl>(.?)+</dl> combo maç arıyorum.
Bunu yapmak için icat ettik yolu herhangi bir <dl 's ben eşleştirme ediyorum <dl></dl> combo içeride değil emin olmaktır. Diğer etiketleri ve satır sonları da dahil olmak üzere, orada başka ne umurumda değil.
Ben bu alt dize olmak ya da içeride bir şey ne kadar süreceğini tahmin edemez çünkü ben normal ifadeler ile bunu yapmak için karar verdi.
Burada bana sadece iki null indicies bir dizi döndürür benim geçerli regex olduğunu:
preg_match_all('/<dl((?!<dl).)+<\/dl>(?=<\/div>)/', $foo, $bar)
Gördüğünüz gibi bu bir içinde başka <dl> denemek ve orada olup olmadığını görmek için negatif lookahead kullanın. Ben de aynı sonuçları burada Negatif Geriye İlerleme denedim. Ben de boşuna yerine sadece + ve +? kullanarak denedim. Hayır desen <dl><dl></dl> ya da bir şey olduğunu akılda tutmak, ama benim regex eşleştirme, ya o ilk <dl> ve son </dl> ya da hiçbir şey.
Şimdi . satır sonları maç olmayacak farkında ama ben orada hayal olabilir bir şey denedim ve hala ya {[çok ilk görüldüğü dan (NULL indicies veya neredeyse tüm dizeyi bana sağlar (1)]} </dl></div>, ben istemedim tam olarak ne <dl> diğer birçok tekrarlarını) içeren için. Ben dürüst yanlış ne yapıyorum bilmiyorum.
Yardımlarınız için teşekkürler! Ben sadece bu sorunu düzeltmek için çalışırken bir yere saat geçirdim ve yaklaşık saçımı çekerek beni tahrik ediyor.