2017-07-28 1 views
-2

私はスクラップでデータを取得しています。 データソースはテーブルであり、すべて(tr)のデータを取得する必要があります。DOM要素をループして配列として格納する方法は?

表有する3(TD):

  • 表題
  • 日付
  • リンクここ

私が使用コードである:

$data = array(); 
$counter = 1; 
$index = 0; 

foreach($html->find('#middle table tr td') as $source){ 

    $dont_include = array(
     '<td>CONTAIN TEXT THAT I DONT WNAT TO INCLUDE IN HERE</td>' 
    ); 

    if (!in_array($source->outertext, $dont_include)) { 

     // IF IT CONTAIN LINK THEN GET IT LINK 
     // THE SOURCE DATA FOR LINK IS SOMETHING LIKE 
     // <td><a href="">xx</a></td> 
     if(strstr($source->innertext, 'http://')){ 

       $a = new SimpleXMLElement($source->innertext); 

       $the_link = (string) $a['href'][0]; 
       $data[$index] = array('link' => $the_link);; 
     }else{ 
      if ($counter==2) { 
       $data[$index] = array('title' => $source->innertext); 
      }else{ 
       $data[$index] = array('date' => $source->innertext); 
       $counter = 0; 
       $index++; 
      } 
     } 
    } 
    $counter++; 
} 

print_r($data); 

を問題: どうすればいいですか?この構造体を使用して配列内のこれらの値を格納します。ここ

Array (
    [0] => Array (
     [title] => "" 
     [date] => "" 
     [link] => "" 
    ) 
    [1] => Array (
     [title] => "" 
     [date] => "" 
     [link] => "" 
    ) 
    ... 
) 

アップデートは、ソース構造である:td

<!-- THIS IS THE SOURCE , AT THE TOP HERE CONTAIN TD THAT I DONT WANT --> 
    <td>title</td> 
    <td class="ac">date</td> 
    <td width="190"><a href="i need this link" target="_blank">filename , i dont need the file name</a> 
    </td> 
<td>title</td> 
    <td class="ac">date</td> 
    <td width="190"><a href="i need this link" target="_blank">filename , i dont need the file name</a> 
    </td> 
<td>title</td> 
    <td class="ac">date</td> 
    <td width="190"><a href="i need this link" target="_blank">filename , i dont need the file name</a> 
    </td> 
<td>title</td> 
    <td class="ac">date</td> 
    <td width="190"><a href="i need this link" target="_blank">filename , i dont need the file name</a> 
    </td> 
+0

'title'、' date'、 'link'はあなたのtdデータですよね? –

+0

'tr'に' td'または 'th'のいずれかが含まれている可能性があります –

+0

問題を詳しく説明してください。 –

答えて

1

の代わりに、ループあなたが作成できるように、私はtrをループにあなたを示唆あなたの配列。お試しください

$rowData = array(); 

foreach ($html->find('#middle table tr') as $rows) { 
    $cellData = array(); 

    $cellData['title'] = $rows->children(0)->innertext; 
    $cellData['date'] = $rows->children(1)->innertext; 
    $cellData['link'] = $rows->children(2)->innertext; 

    $rowData[] = $cellData; 
} 
print_r($rowData); 
+0

投票の理由は何ですか?私はこれと適切に動作していることをテストしている –

+0

肯定的な投票者は、HTML DOMの内容を知らないことがあります –

+0

私のダウン投票ではない、私は質問のソースデータを提供している:) – taek

関連する問題