Ben düzenli ifadeler kullanarak HTML belirli bölümlerini yakalamak için çalışıyorum, ve ben çözmek için nasıl bilmiyorum hangi bir durum geldim.
Ben böyle bir HTML parçasını var:
<span ...> .... <span ...> ... </span> ... </span>
bu nedenle başka bir <span> elemanı iç içe olduğu bir <span> elemanı.
Ben başarılı yakalamak için tüm HTML elemanları (PHP'nin preg_match() / preg_match_all() olarak) aşağıdaki regex kullanarak oldum:
@<sometag[^>]+>.*?</sometag>@
Bu verilen bir başlangıç etiketi ve aynı tip kapanış etiketine kadar herşeyi yakalamak olacaktır.
Ancak, yukarıda durumda, bu yakalama olur <span> ve her şeyi başlarken next kapanış </span> karşılaştı, bu yüzden ne olsun şudur:
<span ...> .... <span ...> ... </span>
, daha sonra dış başlangıç etiketi, her şey iç yayılma başlangıç etiketi kadar, o zaman tabii, ne istiyorum değil, iç yayılma, kapanış etiketine kadar her şeyi.
Gerçekten ne istediğini <span>, iç içe geçmiş olmak üzere içindeki her şeyi ile komple dış <span> unsurdur.
Bunu başarmak için pratik bir yolu var mı?
Not: Bir XML parser kullanarak HTML ayrıştırma HTML olarak ben eski ve çok kırık HTML 4 herhangi bir ayrıştırıcı boğulmamak olacağını MS FrontPage dışarı geliyor üzerinde çalışıyorum, muhtemelen bir seçenek değildir.
Herhangi bir yardım için teşekkür ederiz!