Bagaimana untuk menghuraikan dan memproses HTML/XML dalam PHP?
P粉466643318
P粉466643318 2023-10-11 23:59:23
0
2
634

Bagaimana untuk menghuraikan HTML/XML dan mengekstrak maklumat daripadanya?

P粉466643318
P粉466643318

membalas semua (2)
P粉555696738

CubaPenghurai 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);
    P粉115840076

    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 melaksanakan

    SAXgaya 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 asas

    disediakan, 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.

      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!