cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menghuraikan dan memproses HTML/XML menggunakan PHP?

Bagaimana untuk menghuraikan HTML/XML dan mengekstrak maklumat daripadanya?

P粉154228483P粉154228483412 hari yang lalu655

membalas semua(2)saya akan balas

  • P粉520545753

    P粉5205457532023-10-13 00:52:20

    Cuba Penghurai DOM HTML Mudah.

    • Penghuraikan DOM HTML yang ditulis dalam PHP 5+ yang membolehkan anda memanipulasi HTML dengan cara yang sangat mudah!
    • Memerlukan PHP 5+.
    • Menyokong HTML yang tidak sah.
    • Gunakan pemilih untuk mencari teg pada halaman HTML, sama seperti jQuery.
    • Ekstrak kandungan daripada HTML dalam satu baris.
    • Muat turun

    Nota: Seperti namanya, ia berguna untuk tugasan mudah. Ia menggunakan ungkapan biasa dan bukannya penghurai HTML, jadi ia akan menjadi lebih perlahan untuk tugas yang lebih kompleks. Kebanyakan pangkalan kodnya ditulis pada tahun 2008, dengan hanya penambahbaikan kecil dibuat sejak itu. Ia tidak mengikut piawaian pengekodan PHP moden dan sukar untuk dimasukkan ke dalam projek yang mematuhi PSR moden.

    Contoh:

    Cara mendapatkan elemen HTML:

    // Create DOM from URL or file
    $html = file_get_html('http://www.example.com/');
    
    // Find all images
    foreach($html->find('img') as $element)
           echo $element->src . '
    '; // Find all links foreach($html->find('a') as $element) echo $element->href . '
    ';

    Cara mengubah suai elemen HTML:

    // Create DOM from string
    $html = str_get_html('
    Hello
    World
    '); $html->find('div', 1)->class = 'bar'; $html->find('div[id=hello]', 0)->innertext = 'foo'; echo $html;

    Ekstrak kandungan daripada HTML:

    // Dump contents (without tags) from HTML
    echo file_get_html('http://www.google.com/')->plaintext;

    Rebut Slashdot:

    // Create DOM from URL
    $html = file_get_html('http://slashdot.org/');
    
    // Find all article blocks
    foreach($html->find('div.article') as $article) {
        $item['title']     = $article->find('div.title', 0)->plaintext;
        $item['intro']    = $article->find('div.intro', 0)->plaintext;
        $item['details'] = $article->find('div.details', 0)->plaintext;
        $articles[] = $item;
    }
    
    print_r($articles);

    balas
    0
  • P粉619896145

    P粉6198961452023-10-13 00:47:49

    Sambungan XML asli

    Saya lebih suka menggunakan salah satu daripada sambungan XML asli kerana ia berfungsi dengan PHP secara amnya lebih pantas daripada semua perpustakaan pihak ketiga dan memberi saya semua kawalan yang saya perlukan ke atas penanda.

    DOM

    DOM mampu menghuraikan dan mengubah suai HTML dunia sebenar (rusak), ia boleh melaksanakan pertanyaan XPath< /a> Ia berdasarkan libxml.

    Bekerja dengan DOM mengambil sedikit masa untuk menjadi produktif, tetapi pada pendapat saya, masa itu berbaloi. Memandangkan DOM ialah antara muka neutral bahasa, anda akan menemui pelaksanaan dalam berbilang bahasa, jadi jika anda perlu menukar bahasa pengaturcaraan, kemungkinan besar anda sudah tahu cara menggunakan API DOM bahasa tersebut.

    Cara menggunakan sambungan DOM telah dibincangkan secara meluas pada StackOverflow, jadi jika dan apabila anda memilih untuk menggunakannya, anda boleh yakin bahawa kebanyakan masalah yang anda hadapi boleh diselesaikan dengan mencari/menyemak imbas Stack Overflow.

    Contoh penggunaan asasdan Ikhtisar konsep amboleh didapati dalam jawapan lain.

    XMLReader

    XMLReader, seperti DOM, adalah berdasarkan libxml. Saya tidak tahu cara untuk mencetuskan modul penghurai HTML, jadi menggunakan XMLReader untuk menghuraikan HTML yang rosak mungkin tidak sekuat menggunakan DOM, di mana anda boleh secara jelas memberitahunya untuk menggunakan modul penghurai HTML libxml.

    Contoh penggunaan asas disediakan dalam jawapan lain.

    Penghurai XML Pustaka

    XML parser juga berdasarkan libxml dan melaksanakan

    SAX gaya XML push parser. Ini mungkin pilihan yang lebih baik daripada DOM atau SimpleXML untuk pengurusan memori, tetapi lebih sukar untuk digunakan daripada penghurai tarik yang dilaksanakan oleh XMLReader.

    SimpleXml

    SimpleXML ialah pilihan apabila anda mengetahui bahawa HTML adalah XHTML yang sah. Jika anda perlu menghuraikan HTML yang rosak, jangan pertimbangkan SimpleXml kerana ia akan menyekat.

    Contoh penggunaan asas

    disediakan, dan terdapat banyak lagi dalam manual PHP.


    Pustaka pihak ketiga (berdasarkan libxml)

    Jika anda lebih suka menggunakan pustaka pihak ke-3, saya syorkan anda menggunakan DOM/libxml di bawah dan bukannya menghuraikan rentetan.

    FluentDom

    HtmlPageDom

    phpQuery

    Ini digambarkan sebagai "Perisian dan pepijat terbengkalai: gunakan atas risiko anda sendiri" tetapi nampaknya diselenggara secara minimum.

    laminas-dom

    fDOMDocument

    sabre/xml

    FluidXML


    Pihak ketiga (bukan berdasarkan libxml)

    Faedah membina pada DOM/libxml ialah anda mendapat prestasi yang baik di luar kotak kerana anda membina sambungan asli. Walau bagaimanapun, tidak semua perpustakaan pihak ketiga melalui laluan ini. Sebahagian daripada mereka disenaraikan di bawah

    PHP Penghurai DOM HTML Mudah

    Saya secara amnya tidak mengesyorkan penghurai ini. Asas kod adalah mengerikan dan penghurai itu sendiri agak perlahan dan intensif memori. Tidak semua pemilih jQuery (seperti sub-pemilih) boleh dilakukan. Mana-mana perpustakaan berasaskan libxml harus dengan mudah mengatasi ini.

    Penghuraikan Html PHP

    Sekali lagi, saya tidak akan mengesyorkan penghurai ini. Agak perlahan apabila penggunaan CPU tinggi. Juga tiada fungsi untuk mengosongkan memori objek DOM yang dicipta. Masalah ini amat teruk dalam gelung bersarang. Dokumen itu sendiri tidak tepat dan mengandungi salah ejaan dan tiada respons pembetulan sejak 14 April 2016.


    HTML 5

    Anda boleh menggunakan perkara di atas untuk menghuraikan HTML5, tetapi beberapa perkara pelik mungkin berlaku disebabkan oleh markup yang dibenarkan oleh HTML5. Oleh itu, untuk HTML5 anda mungkin ingin mempertimbangkan untuk menggunakan penghurai khusus. Ambil perhatian bahawa ini ditulis dalam PHP, jadi prestasi akan menjadi lebih perlahan dan penggunaan memori meningkat berbanding sambungan yang disusun dengan bahasa peringkat rendah.

    HTML5DomDocument

    HTML5


    Ekspresi Biasa

    Terakhir dan paling tidak disyorkan, anda boleh menggunakan ungkapan biasauntuk mengekstrak data daripada HTML a >. Secara umum, penggunaan ungkapan biasa pada HTML adalah tidak digalakkan.

    Kebanyakan coretan kod yang anda temui di web untuk pemadanan teg adalah rapuh. Dalam kebanyakan kes, ia hanya berfungsi dengan coretan HTML yang sangat khusus. Perubahan markup kecil (seperti menambah ruang di suatu tempat, atau menambah atau menukar atribut dalam markup) boleh menyebabkan ungkapan biasa gagal apabila ditulis dengan salah. Sebelum menggunakan RegEx pada HTML, anda harus tahu apa yang anda lakukan.

    Penghurai HTML sudah mengetahui peraturan sintaks HTML. Ungkapan biasa mesti diajar untuk setiap ungkapan biasa baharu yang anda tulis. Ungkapan biasa adalah baik dalam beberapa kes, tetapi ia benar-benar bergantung pada kes penggunaan anda.

    Anda boleh menulis penghurai yang lebih dipercayai , tetapi menulis penghurai tersuai lengkap dan boleh dipercayai menggunakan ungkapan biasa adalah membuang masa apabila perpustakaan di atas sudah wujud dan melakukan kerja yang lebih baik dalam hal ini.

    Lihat jugaCthulhu Way Analysis Html< /a>


    Buku

    Kalau nak keluarkan duit boleh tengok

    Saya tidak bergabung dengan arkitek atau pengarang PHP.

    balas
    0
  • Batalbalas