DOMDocument::loadHTML

(PHP 5, PHP 7, PHP 8)

DOMDocument::loadHTMLHTML belgeyi bir dizgeden yükler

Açıklama

public DOMDocument::loadHTML(string $source, int $options = 0): bool

HTML belgeyi belirtilen dizgeden yükler. XML belge yüklemedeki gibi belgenin iyi biçemli olma gereği yoktur.

Uyarı

Bu işlev, girdiyi bir HTML 4 ayrıştırıcısı kullanarak ayrıştırır. Günümüz tarayıcılarının kullandığı HTML 5 için ayrıştırma kuralları farklıdır. Girdiye bağlı olarak bu farklı bir DOM yapısıyla sonuçlanabilir. Bu nedenle bu işlev HTML temizliği için güvenli bir şekilde kullanılamaz.

HTML ayrıştırılırken davranış, özellikle uç koşulları ve hata işleme açısından kullanılan libxml sürümüne bağlı olabilir. HTML5 belirtimine uyan ayrıştırma için PHP 8.4 sürümünde eklenen Dom\HTMLDocument::createFromString() veya Dom\HTMLDocument::createFromFile() kullanılmalıdır.

Örneğin, bazı HTML öğeleri karşılaşıldığında bir üst öğeyi örtük olarak kapatır. Üst öğeleri otomatik olarak kapatma kuralları HTML 4 ve HTML 5 arasında farklılık gösterir ve bu nedenle DOMDocument tarafından görülen sonuç DOM yapısı bir tarayıcının gördüğü DOM yapısından farklı olabilir ve bu da bir saldırganın sonuç HTML kodunu kırmasına olanak tanıyabilir.

Bağımsız Değişkenler

source

HTML belgeyi içeren dizge.

options

libxml seçenek sabitlerinin bitsel VEYAsı.

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Hatalar/İstisnalar

source olarak boş bir dizge aktarılırsa bir uyarı üretilir. Bu uyarıyı libxml üretmez ve libxml'in hata işlevleri ile elde edilemez.

Bozuk bir HTML sayfa başarıyla yüklense bile bu işlev hatalı bir imlenim ile karşılaştığında bir E_WARNING iletisi üretebilir. Böyle bir durumu atlatabilmek için libxml'in hata işleme işlevleri kullanılabilir.

Sürüm Bilgisi

Sürüm: Açıklama
8.3.0 Bu işlevin dönüş türü artık deneysel bool türünde.
8.0.0 Bu işlevin duruk olarak çağrılması artık Error oluşturuyor. Evvelce E_DEPRECATED hatası verirdi.

Örnekler

Örnek 1 - Bir HTML belge oluşturmak

<?php
$doc
= new DOMDocument();
$doc->loadHTML("<html><body>Test<br></body></html>");
echo
$doc->saveHTML();
?>

Ayrıca Bakınız