Satır numarası burada değil div gerçek içeriği sizin için önemli olduğundan, ben hiç regex kullanmak için değil meyilli olurdu. Herhalde bu dizi boyunca bir dizi ve döngü içine explode()
dizesi işaretleyici arıyor olurdu. Şöyle:
<?php
$myContent = "[your string of html here]";
$myArray = explode("\n", $myContent);
$arraylen = count($myArray); // So you don't waste time counting the array at every loop
$lineNo = 0;
for($i = 0; $i < $arraylen; $i++)
{
$pos = strpos($myArray[$i], 'id="Alpha"');
if($pos !== false)
{
$lineNo = $i+1;
break;
}
}
?>
Yasal Uyarı: Bu test etmek için hazır bir php kurulumu yüzden bazı hata ayıklama gerekebilir yok.
Bir kerelik özellikle eğer - Ben muhtemelen sadece sadece çok basit bir şey yapmak için bir ayrıştırma motoru uygulamak için zaman kaybı olacak düşünüyorum Umarım bu yardımcı olur.
Edit: içeriği bu aşamada size güçsüz ise çok daha sonra iş için yeterli bir regex sağlayan diğer yanıtlar ile birlikte kullanabilirsiniz.
Düzenleme # 2: Ah ne hey ... Burada benim iki sent:
"/<div.*?id=\"Alpha\".*?>.*?(<div.*//div>)*.*?//div>/m"
(<div.*//div>)
bu iç içe div etiketleri bulabilirsiniz ve yerine sadece ilk </div>
durdurma daha onları bulursa sadece Maçın onları birleştirmek için regex motoru söyler. Yuvalanma sadece bir seviye varsa Ancak bu sadece sorunu çözer. Daha fazla varsa, o regex özür için değil: (.
/m
da [\S\s]
ile her yerde kirli up ifadeler zorunda kalmamak regex motoru linebreaks görmezden yapar.
Yine, üzgünüm, ben hata ayıklama gerekebilir yüzden şu anda bu test için herhangi bir ortam var.
Cheers
Iain