Aynı eleman türü bunun içinde yuvalanmış zaman nasıl regex kullanarak, ben, dış HTML öğesi yakalayabilir?

0 Cevap php

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!

0 Cevap