PHP'nin DOM uzatma loadHTML nasıl kullanılır

4 Cevap

Bazı "sarkan" HTML etiketleri kapatmak için, PHP'nin uzantısı ve DOM loadHTML kullanmanız gerektiğini bana önerildi.

Ben, öğreticiler ararken, bir süre çalışıyor this page, okuma, çeşitli şeyler deniyor ama ne istiyorum gerçekleştirmek için nasıl kullanılacağını anlamaya görünüyor olamaz oldum.

Ben bu dizesi vardır: <div><p>The quick brown <a href="">fox jumps...

Ben açıldı HTML etiketlerini kapatır bir işlevi yazmak gerekir.

Sadece burada bir başlangıç ​​noktası arıyor. Ben genellikle oldukça hızlı şeyleri anlamaya.

4 Cevap

DOMDocument DOMDocument::loadHTML (PHP kullanarak içinde sınıf) & yapılabilir DOMDocument::normalizeDocument () yöntemleri.

<?php
    $html = '<div><p>The quick brown <a href="">fox jumps';

    $DDoc = new DOMDocument();
    $DDoc->loadHTML($html);
    $DDoc->normalizeDocument();

    echo $DDoc->saveHTML();
?>

Çıkışlar:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html><body><div><p>The quick brown <a href="">fox jumps</a></p></div></body></html>

Oradan, sadece substr & strpos uzakta istemiyorum html, şöyle:

<?php
    $html = '<div><p>The quick brown <a href="">fox jumps';

    $DDoc = new DOMDocument();
    $DDoc->loadHTML($html);
    $DDoc->normalizeDocument();

    $html = $DDoc->saveHTML();

    # Remove Everything Before & Including The Opening HTML & Body Tags.
    $html = substr($html, strpos($html, '<html><body>') + 12);
    # Remove Everything After & Including The Closing HTML & Body Tags.
    $html = substr($html, 0, -14);

    echo $html;
?>

Ben DOM ne istediğinizi yapmak için alabilir emin olduğum sürece sana Tidy ile daha iyi olurdu eminim.

Bunu kesiliyor sonra, dize değil kesecek DOM malzeme kullanmak zorunda: Ben yanlış bir yaklaşım izleyerek düşünüyorum.

Bu ben bunu nasıl olduğunu:

  1. Eğer dize kesilmesini istediğiniz yer bulun
  2. Bu noktadan sonra tüm alt düğümleri sil
  3. Dize kesecek