2011-09-15 10 views
0

HTMLファイルからテーブルにテーブルを読み込もうとしています。 ご協力いただければ幸いです。PHPテーブルへの配列

すべてのテーブル要素が1列値に格納されなければならない

例:$arr[1]= DER HE1 ges 1

PHP

<?php 
     libxml_use_internal_errors(true); 
     $i=0; 
     // new dom object 
     $dom = new DOMDocument(); 

     //load the html 
     $html = $dom->loadHTMLFile("106642new.html"); 

     //discard white space 
     $dom->preserveWhiteSpace = false; 

     //the table by its tag name 
     $tables = $dom->getElementsByTagName('table'); 

     //get all rows from the table 
     $rows = $tables->item(0)->getElementsByTagName('tr'); 
     // $test = $tables->item(0)->getElementsByTagName('td'); 

     // loop over the table rows 
     foreach ($rows as $row) { 
      // get each column by tag name 
      $cols = $row->getElementsByTagName('td'); 
      $i= $i + 1 ; 
      $value = "Nummer: ".$i.": ".$cols->item(0)->nodeValue.PHP_EOL; 
      // $value = "test: ".$i.": ".$cols->item(0)->nodeValue.PHP_EOL; 
      $cols = array(1, 2, 3, 4, 5); 
      echo $value; 
      // $cols[$i] = $row; 
      // echo the values  
      //echo $cols->item(0)->nodeValue ; 
     } 
?> 

HTML:考える場合

<body bgcolor="#FFFFFF" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0"> 

      <div align=left> 

      <table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="100%" height="100%"> 

      <tr><td valign="top">&nbsp</td></tr> 

      <tr><td valign="top"> 

      <p font class="Header">Basisrooster schooljaar 2011 2012 (m.i.v. 12-09-11)</font></p> 
      <br><div font class="lNameHeader"> </font> </div><table border=1> 
      <tr class="AccentDark"> 
      <td align="left" width="65" class="tableHeader"></td> 
      <td align="center" width="auto" class="tableHeader">Maandag</td> 
      <td align="center" width="auto" class="tableHeader">Dinsdag</td> 
      <td align="center" width="auto" class="tableHeader">Woensdag</td> 
      <td align="center" width="auto" class="tableHeader">Donderdag</td> 
      <td align="center" width="auto" class="tableHeader">Vrijdag</td> 
      </tr><tr> 
      <td align="left" width="50" class="tableHeader">1e uur</td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell"></td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell"></td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell"></td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">WAS</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HE09</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">econ</td> 
      <td align="left" width="9" class="tableCell">5</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">WIK</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HC17</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">biol</td> 
      <td align="left" width="9" class="tableCell">4</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">OTT</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HC01</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">dutl</td> 
      <td align="left" width="9" class="tableCell">6</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell"></td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell"></td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell"></td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      </tr> 
      <tr> 
      <td align="left" width="50" class="tableHeader">2e uur</td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">KEJ</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HC02</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">wisA</td> 
      <td align="left" width="9" class="tableCell">3</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">BRT</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HE05</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">netl</td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">OTT</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HC01</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">dutl</td> 
      <td align="left" width="9" class="tableCell">6</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">BAU</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HG01</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">lo</td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">MET</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HD02</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">entl</td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      </tr> 
      <tr> 
      <td align="left" width="50" class="tableHeader">3e uur</td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">WAS</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HE07</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">econ</td> 
      <td align="left" width="9" class="tableCell">5</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">MET</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HD02</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">entl</td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">WAS</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HE05</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">econ</td> 
      <td align="left" width="9" class="tableCell">5</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">BAU</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HG01</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">lo</td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">KEJ</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HC02</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">wisA</td> 
      <td align="left" width="9" class="tableCell">3</td> 
      </tr> 
      </table> 
      </td> 
      </tr> 
      <tr> 
      <td align="left" width="50" class="tableHeader">4e uur</td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell"></td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell"></td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell"></td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">DER</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HE08</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">ges</td> 
      <td align="left" width="9" class="tableCell">1</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">KEJ</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HC06</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">wisA</td> 
      <td align="left" width="9" class="tableCell">3</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">DER</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HE10</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">ges</td> 
      <td align="left" width="9" class="tableCell">1</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">CHR</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HB15</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">ckv</td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      </tr> 
      <tr> 
      <td align="left" width="50" class="tableHeader">5e uur</td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">DOC</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HE09</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">m&o</td> 
      <td align="left" width="9" class="tableCell">2</td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell"></td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell"></td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell"></td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">MET</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HD02</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">entl</td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">BRT</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HE05</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">netl</td> 
      <td align="left" width="9" class="tableCell"></td> 
      </tr> 
      </table> 
      </td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">OTT</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HC03</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">dutl</td> 
      <td align="left" width="9" class="tableCell">6</td> 
      </tr> 
      </table> 
      </td> 
      </tr> 
      <tr> 
      <td align="left" width="50" class="tableHeader">6e uur</td> 
      <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" > 
      <tr> 
      <td align="left" width="41" class="tableCell">OTT</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="75" class="tableCell">HC03</td> 
      <td align="left" width="3" class="tableCell">&nbsp</td> 
      <td align="left" width="73" class="tableCell">dutl</td> 
      <td align="left" width="9" class="tableCell">6</td> 
      </tr> 
      </table> 
      </td> 
+1

なぜあなたは詰まっていますか?エラーメッセージなどありますか?この種の問題をあなた自身で解決することは、通常、より報い+教育的です。 – Rijk

+0

あなたのコメントをありがとう、はい私はそれを試してみましたが、それを解決することはできません。問題は私の出力がnummer1ではないということです:BAU \t \t HG01 lo nummer2:DEN HG01 lo ...しかし数字をスキップしてnumber22のような一つの値に複数の要素を投げます:DER HG01 lo DAVE H48A GS –

答えて

1

問題は、あなたの最初のことですテーブルは他のテーブルのコンテナです。 すべてのテーブルの内容を取得する場合は、テーブルリストを繰り返し処理する必要があります。

内部テーブルの内容を取得したい場合は、最初にDOM内でそのテーブルの位置を確認してください。私は最初のテーブルを見つけることをお勧めします。その中のすべてのテーブル要素を取得し、それらを繰り返します。

のvar_dumpデバッグのための良い出発点である、あなただけのデバッグ、あなたはすでにやったよりも、他に何も必要ありませんし、より多くのテスト:)

0

を私はそれが無効なHTML/XMLだという事実があることを推測していますあなたを倒す

不正なHTMLをある程度までサポートするloadHTMLFile()関数を使用していますが、有効なHTML/XMLも必要な場合があります。

有効なXMLが必要な場合は、おそらく "< br>"がスタンドアロンノードとして解釈されるのではなく、ノードの開始点として解釈されます。それは "< br>"のサブノードになります。

なお、ここでこのラインは意味をなさない:

<p font class="Header">Basisrooster schooljaar 2011 2012 (m.i.v. 12-09-11)</font></p>

<フォント>タグには何年も時代遅れとなっており、使用すべきではありませんが、より重要なことは、フォントタグが、p型ではありませんこれはフォントタグのように閉じられます。ただしてください:

<p class="Header">Basisrooster schooljaar 2011 2012 (m.i.v. 12-09-11)</p>

したがって、あなたのHTML/XMLが無効である可能性があります。

(ダンBizdadeaも良い点があります)

+0

ええ、それ以外の場合は、データを抽出する方が簡単です。 @ダンは、その方法の例を挙げることができますか? 私は自分のコードで何を変えるべきかわからない。 –

関連する問題