-1

他のWebサイトからテーブルを取得したい(テーブルは毎日更新されています)。元のWebサイトと同じ配置ではなく、自分のWebサイトに表示したいです。

したがって、curlとstrstr()を使用してテーブルを取得しましたが、文字列関数を使用してテーブル全体を編集するのは無意味に思えます。これを行うにはもっと簡単な方法があると確信しています。

たぶん、元のテーブルをxml形式で作成して、構造をより簡単に操作できるようにする方法はありますか?

どうもありがとうございます!

4

1 に答える 1

0

これは、テーブルを消費する方法の大まかな例です(別のテーブルをエコーアウトするためだけに)。以下では、SimpleXMLとxpathを使用して、テーブルデータのクラスを持つ要素をドキュメントで検索し、すべてのTRをループしてパッティングします。と存在するブロックを処理するためのいくつかの特別な条件

明らかな欠点は、サードパーティのWebサイトのレイアウトが変更されると、コードが機能しなくなることです。

header('Content-Type: text/html; charset=UTF-8');
$html = file_get_contents('http://www.votes-19.gov.il/nationalresults'); // or use curl
$html = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8"); 

$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
$doc->loadHTML($html);
$xml = simplexml_import_dom($doc);

echo '<!doctype html><html><head><style type="text/css">body{direction: rtl;}</style></head><body><table>';
if($trxpath = $xml->xpath('//table[@class="TableData"]/tr'))
{
  foreach($trxpath as $tr)
  {
    echo '<tr>';
    echo '<th>' . $tr->th . '</th>';
    foreach($tr->td as $td)
    {
      if($td->div)
        echo '<td>' . $td->div . '</td>';
      else
        echo '<td>' . $td . '</td>';
    }
    echo '</tr>';
  }
}
echo '</table></body></html>';
于 2013-01-24T22:38:14.120 に答える