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!