2017-07-06 4 views
0

Ich versuche, Inhalt aus einer lokalen HTML-Datei zu extrahieren. Und ich benutze die HTML-Parse-Methode, bekomme aber nichts.PHP HTML-Inhalt per HTML extrahieren parse get null-Objekt

PHP-Code ist wie folgt:

$doc = new \DOMDocument(); 
$doc->loadHTML("assets.html"); 
$tables = $doc->getElementsByTagName('table'); 
foreach($tables as $table) { 
    $content = $doc->saveHTML($table); 
} 
echo $content; 

Debug Schritt für Schritt, $doc->loadHTML("assets.html") Rückkehr true und für $tablesDOMNodeList::__set_state(array( )) bekam.

Der Teil assets.html ist wie folgt:

        <div class="btn-group"> 
 
            <button type="button" class="btn btn-info dropdown-toggle" id="manage" data-toggle="dropdown"> 
 
              新增 
 
              <span class="caret"></span> 
 
             </button> 
 
             <ul class="dropdown-menu " role="menu"> 
 
              <li><a href="#" id="newassets">增加资产</a></li> 
 
              <li><a href="#" id="newdetail">增加明细</a></li> 
 

 
             </ul> 
 
            </div> 
 
            <button type="button" class="btn btn-danger" id="deleteassets" value="" >删除</button> 
 
            <button type="button" class="btn btn-success" id="modifyassets" value="" >修改</button> 
 
            <button type="button" class="btn btn-warning" id="lend-lease" value="" >领用</button> 
 
           </div> 
 

 
            <div class="dataTable_hr_info"> 
 
            <table class="table table-striped table-bordered table-hover" action="" id="assetsInfo"> 
 
             <thead> 
 
             <tr> 
 
              <th data-field="state" data-checkbox="true"></th> 
 
              <th data-field="pr" >序号</th> 
 
              <th data-field="category">资产类别</th> 
 
              <th data-field="name" >资产名称</th> 
 
              <th data-field="model">型号</th> 
 
              <th data-field="unit">单位</th> 
 
              <th data-field="count">数量</th> 
 

 
             </tr> 
 
             </thead> 
 
            </table> 
 
            </div> 
 
           </div> 
 
         </div>

+0

Sind Sie sicher, '$ doc' das richtige Dokument in ihm hat, dass es loaded korrekt? Führt dieser Code zu Fehlern im Protokoll? – tadman

+0

Ich überprüfe nur $ doc-> loadHTML ("assets.html") true zurück. Wie kann ich überprüfen, ob es korrekt geladen ist? Fehlerinfo nicht gefunden. – Lisa

+0

Ich denke, Raidance hat hier die richtige Idee. Vielleicht hat es diese Zeichenfolge buchstäblich analysiert, als ob das das Dokument wäre. – tadman

Antwort

1

Sie HTML aus einer Datei geladen werden, so verwenden: $doc->loadHTMLFile("assets.html"); statt $doc->loadHTML("assets.html");

Sie nach innen erhalten sollten Daten $content danach.

+0

als Ihre Lösung, bekomme ich den richtigen Inhalt in HTML5. Aber einige HTML-Dateien sind unter der HTML 4.0-Version. Nach loadHTMLFile, habe ich die Fehlermeldung "Unexpected end tag" erhalten. Aber ich habe manuell überprüft, dass alle Tags korrekt geschlossen sind. Weißt du, ob die HTML-Analyse HTML4 unterstützt? – Lisa

0

Fehler in Ihrem Code gefunden.

1: Sie können die loadHTML-Methode nicht zum Laden von HTML verwenden.

2: In Ihrer HTML-Datei schließen sich einige Tags nicht richtig.

prüfen Code unten,

PHP

<?php 
    $dom = new DomDocument(); 
    $dom->loadHTML(file_get_contents('assets.html')); 
    $tables = $dom->documentElement->getElementsByTagName('table'); 
    foreach($tables as $table) { 
     $content = $dom->saveHTML($table); 
    } 
    echo $content; 
?> 

HTML

<div class="btn-group"> 
    <button type="button" class="btn btn-info dropdown-toggle" id="manage" data-toggle="dropdown"> 
      新增 
    <span class="caret"></span> 
    </button> 
    <ul class="dropdown-menu " role="menu"> 
     <li><a href="#" id="newassets">增加资产</a></li> 
     <li><a href="#" id="newdetail">增加明细</a></li> 
    </ul> 
</div> 
<button type="button" class="btn btn-danger" id="deleteassets" value="" >删除</button> 
<button type="button" class="btn btn-success" id="modifyassets" value="" >修改</button> 
<button type="button" class="btn btn-warning" id="lend-lease" value="" >领用</button> 
<div class="dataTable_hr_info"> 
    <table class="table table-striped table-bordered table-hover" action="" id="assetsInfo"> 
     <thead> 
      <tr> 
       <th data-field="state" data-checkbox="true"></th> 
       <th data-field="pr" >1</th> 
       <th data-field="category">2</th> 
       <th data-field="name" >3</th> 
       <th data-field="model">4</th> 
       <th data-field="unit">5</th> 
       <th data-field="count">6</th> 
      </tr> 
     </thead> 
    </table> 
</div>