Php ile HTML Ayrıştırma

2 Cevap php

Ben diziler içine etiketleri arasında veri alınamıyor:

// Load the HTML string from file and create a SimpleXMLElement
$html_string = file_get_contents("data/csr.html"); /*the string really is in $html_string*/
$root = new SimpleXMLElement($html_string);

Ben almaya çalıştığınızda sorun burada başlar etiketleri arasındaki değeri: bir diziye div, h2 ve yayılma

// Fetch all div, h2 and span values
$divArray = $hdlsArray = $dtlsArray = array();
    foreach ($root->div as $div) {
    $divArray[] = $div;
    echo "".$div."<br />";
}
foreach ($root->h2 as $h2) {
    $hdlsArray[] = $h2;
    echo "".$h2."<br />";
}
foreach ($root->span as $span) {
    $dtlsArray[] = $span;
    echo "".$span."<br />";
}

Bunun sonucu yerine, gerçek etiket verilerini baskı bir boş sayfası

2 Cevap

SimpleXMLElement için bir alternatif olarak, tavsiye Simple HTML DOM (online manual). Ben daha önce kullanılan ve çok sonuçlarından memnun ettik. Bu nedenle tüm div, h2 ve açıklık değerlerini alma oldukça basittir Eğer seçiciler gibi jQuery kullanmak için izin verir.

This page (SimpleXML hakkında) "onunla tek sorun sadece geçerli XML yüklemek edeceksiniz" diyor ama HTML için bir çözüm sağlayabilir.

StackOverflow 'İlgili Sorular' this one dahil, ancak HTML inside geçerli XML etiketlerini açıklar.