Rumah >pembangunan bahagian belakang >tutorial php >Penghuraian Regex lwn. DOM: Mana yang Terbaik untuk Mengekstrak Atribut `href` daripada HTML?

Penghuraian Regex lwn. DOM: Mana yang Terbaik untuk Mengekstrak Atribut `href` daripada HTML?

Linda Hamilton
Linda Hamiltonasal
2024-12-22 18:39:10309semak imbas

Regex vs. DOM Parsing: Which is Best for Extracting `href` Attributes from HTML?

Merebut Atribut href bagi Elemen A: Regex vs. DOM Parsing

Cuba untuk mengekstrak maklumat pautan daripada halaman HTML memerlukan pengendalian yang teliti daripada atribut href. Walaupun ungkapan biasa menawarkan pendekatan asas, mereka boleh menghadapi kesukaran apabila atribut href tidak diletakkan dahulu dalam teg.

Alternatif yang boleh dipercayai ialah menggunakan penghuraian Model Objek Dokumen (DOM). Begini cara untuk mendapatkan maklumat atribut href dengan berkesan menggunakan DOM:

$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
    echo $dom->saveHtml($node), PHP_EOL;
}

Kod ini mencari dan mengeluarkan "outerHTML" bagi semua elemen A dalam rentetan $html.

Selain itu, DOM menyediakan keupayaan berikut:

  • Mendapatkan nilai teks: $node->nodeValue
  • Menyemak kewujudan atribut href: $node->hasAttribute( 'href' )
  • Mendapatkan atribut href: $node->getAttribute( 'href' )
  • Menukar atribut href: $node->setAttribute('href', 'something else')
  • Mengalih keluar atribut href: $node->removeAttribute('href')
  • Mencari atribut href secara langsung dengan XPath:
$nodes = $xpath->query('//a/@href');
foreach ($nodes as $href) {
    echo $href->nodeValue; // echo current attribute value
}

DOM menyediakan penyelesaian yang komprehensif untuk menghuraikan HTML dan mengekstrak maklumat atribut href dengan cekap. Pertimbangkan pendekatan ini untuk hasil yang mantap dan boleh dipercayai. Juga, rujuk sumber yang disediakan untuk penerokaan lanjut.

Atas ialah kandungan terperinci Penghuraian Regex lwn. DOM: Mana yang Terbaik untuk Mengekstrak Atribut `href` daripada HTML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn