Dom / XPath ile Kardeşleri

0 Cevap php

Aşağıdaki html kodu (gerçek hiyerarşik ağaç yapısı olmadığını fark) ayrıştırmak birkaç gün çalışıyorlar. Her şey aynı seviyede oldukça fazla.

<p><span class='one'>week number</span></p>

<p><span class='two'>day of the week</span></p>
<table class='spreadsheet'>
table data
</table>

<p><span class='two'>another day of the week</span></p>
<table class='spreadsheet'>
table data
</table>

<p><span class='one'>another week number</span></p>
ETC

Ne temelde yapmak istiyorum, her dom elemanı geçmesi o ise, bu özel hafta için haftanın tüm günleri ekleyin ve bir güne karşılık gelen tüm tablo veri eklemek, bir hafta olup olmadığını kontrol etmek için, bir hafta. Bu yüzden, şu yapıya sahip bir:

array {
31 => array {
    monday => array {
        data => table data
    }
    tuesday => array {
        data => table data
    }   
}

32 => array {
    monday => array {
        data => table data
    }
    tuesday => array {
        data => table data
    }   
}
}

Bu benim bugüne kadar benim PHP kodudur.

$d = new DomDocument;
@$d->loadHtml($html);
$xp = new DomXpath($d);

$res = $xp->query( "//*[@class='one' or @class='two' or @class='spreadsheet']" ); 

foreach ($res as $dn) {
    $nodes = $dn->childNodes;
    foreach ($nodes as $node) {
        if ($node->nodeValue != "") {
            echo $node->nodeValue;
        }

    }
}

Bunu başarmak için XPath kullanmak için burayı stackoverflow bazı insanlar tarafından uçlu edilmiş, yukarıdaki kodu ayrı ayrı her düğümü işler. Ne ben yapıyor olması gerektiğini düşünüyorum her "hafta" düğümlerini almak olduğunu ve böylece diziye bu eklerseniz, bir gün wether oradan kontrol, sonraki kardeş almak yerine, bir "hafta" düğümü ise, yeni bir dizi vs vs oluşturmak

Ben bu ile son birkaç gün saçımı yırtılma olmuştur, bu yüzden doğru yönde herhangi bir yardım / itme çok takdir olurdu!

Cheers, Dandoen

0 Cevap