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.
// 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 . ' ';
Saya lebih suka menggunakan salah satu daripadasambungan XML aslikerana ia berfungsi dengan PHP secara amnya lebih pantas daripada semua perpustakaan pihak ketiga dan memberi saya semua kawalan yang saya perlukan ke atas penanda.
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 dibincangkansecara 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.
XMLReader, seperti DOM, adalah berdasarkan libxml. Saya tidak tahu bagaimana 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.
SimpleXML ialah pilihan apabila anda tahu bahawa HTML adalah XHTML yang sah. Jika anda perlu menghuraikan HTML yang rosak, jangan pertimbangkan SimpleXml kerana ia akan menyekat.
Contoh penggunaan asas
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
Saya secara amnya tidak mengesyorkan penghurai ini. Asas kod adalah mengerikan dan penghurai itu sendiri agak perlahan dan intensif memori. Tidak semua pemilih jQuery (sepertisub-pemilih) boleh dilakukan. Mana-mana perpustakaan berasaskan libxml harus dengan mudah mengatasi ini.
Sekali lagi, saya tidak akan mengesyorkan penghurai ini. Agak perlahan apabila penggunaan CPU tinggi. Juga tiada fungsi untuk mengosongkan ingatan 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, tetapibeberapa perkara pelik mungkin berlakudisebabkan 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.
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.
Andaboleh menulis penghurai yang lebih dipercayai, tetapi menulislengkap dan boleh dipercayaipenghurai tersuai menggunakan ungkapan biasa adalah membuang masa apabila perpustakaan di atas sudah wujud dan melakukan kerja yang lebih baik dalam hal ini.
CubaPenghurai DOM HTML Mudah.
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:
Cara mengubah suai elemen HTML:
Ekstrak kandungan daripada HTML:
Rebut Slashdot:
Sambungan XML asli
Saya lebih suka menggunakan salah satu daripadasambungan XML aslikerana 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 melaksanakanpertanyaan XPath Ia berdasarkanlibxml.
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 dibincangkansecara 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 asasdanIkhtisar konsep amboleh didapati dalam jawapan lain.
XMLReader
XMLReader, seperti DOM, adalah berdasarkan libxml. Saya tidak tahu bagaimana 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 asasdisediakan dalam jawapan lain.
Penghurai XMLPustaka
XML parser juga berdasarkan libxml dan melaksanakanSAXgaya 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 tahu bahawa HTML adalah XHTML yang sah. Jika anda perlu menghuraikan HTML yang rosak, jangan pertimbangkan SimpleXml kerana ia akan menyekat. Contoh penggunaan asasdisediakan, dan terdapat banyak lagidalam manual PHP.
Pustaka pihak ketiga (berdasarkan libxml)
Jika anda lebih suka menggunakan pustaka pihak ke-3, saya syorkan anda menggunakanDOM/libxmldi 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 (sepertisub-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 ingatan 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, tetapibeberapa perkara pelik mungkin berlakudisebabkan 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 danpaling tidak disyorkan, anda boleh menggunakanungkapan 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.
Andaboleh menulis penghurai yang lebih dipercayai, tetapi menulislengkap dan boleh dipercayaipenghurai tersuai 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
Buku
Kalau nak keluarkan duit pun boleh tengok
Saya tidak bergabung dengan arkitek atau pengarang PHP.