PHPでHTMLテーブルをJSONに変換

作成済みのHTMLテーブルデータをJSONフォーマットに変換する方法をまとめました。

ここでは下記プログラムを使用しています。
https://github.com/tremblay/HTML-Table-to-JSON/blob/master/README.md
 

(1)ツールの準備、使用方法


 
1)上記ツールをダウンロードし、適当なフォルダに配置
 
2)HTMLTable2JSON.phpのソースを変更
 
①不要なログが出力されないようにコメントにしました。

// Check return status
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);
if (200 <= $status && 300 > $status)
//echo 'Got the html from '.$url.'<br />';
;
else
  die('Failed to get html from '.$url.'<br />');
curl_close($c);

 
②テーブルIDの判定部分の記述が誤っているようなので下記のように変更しました。
 
// Pull table out of HTML
//if (strcmp(”, $tableID))
if (strcmp(”, $tableID) == 0)
 
3)関数の書式とオプション
 
tableToJSON(
 $url,
 $firstColIsRowName = TRUE,
 $tableID =”,
 $ignoreCols = NULL,
 $headers = NULL,
 $firstRowIsData = FALSE,
 $onlyColumns = FALSE,
 $arrangeByRow = FALSE,
 $ignoreHidden = FALSE,
 $printJSON = TRUE,
 $testingTable = NULL
)
 
・デフォルトでは、HTMLテーブルの一番目のカラムをタイトルとして扱っています。
JSONデータが複雑になっていたのでFALSEに変更しました。
 $firstColIsRowName = FALSE
 
・デフォルトでは、セルを一つのオブジェクトとして扱っています。
HTMLの各行を配列の1要素、行内の各セルはその配列要素の中のハッシュの値とする場合は下記のように変更します。
$arrangeByRow = TRUE
 

(2)使用例


 
1)HTMLファイル内に一つのテーブルがある場合
 
(外部HTMLファイル、sample-table.html)
<table id=”サンプル1” border=1>
<caption>サンプルテーブル</caption>
<tr><th>サイズ</th><th>商品A</th><th>商品B</th></tr>
<tr><td>10~15<br>(m2)</td><td>4512<br>(30)</td><td>4428<br>(53)</td></tr>
<tr><td>15~20<br>(m2)</td><td>3994<br>(439)</td><td>3803<br>(309)</td></tr>
<tr><td>20~25<br>(m2)</td><td>3616<br>(278)</td><td>3414<br>(198)</td></tr>
<tr><td>25~30<br>(m2)</td><td>3228<br>(103)</td><td>3021<br>(136)</td></tr>
<tr><td>30~35<br>(m2)</td><td>3309<br>(60)</td><td>3045<br>(90)</td></tr>
</table>
 
(作成したPHPスクリプト)
<?php
include_once ‘src/HTMLTable2JSON.php’;
$helper = new HTMLTable2JSON();
echo $helper->tableToJSON(‘http://localhost/html/sample-table.html’,FALSE,”,NULL,NULL,FALSE,FALSE,TRUE,FALSE,FALSE,NULL);
?>
 
(変換して生成されるデータ)
[{“サイズ”:”10~15(m2)”, “商品A”:”4512(30)”, “商品B”:”4428(53)”},
{“サイズ”:”15~20(m2)”, “商品A”:”3994(439)”, “商品B”:”3803(309)”},
{“サイズ”:”20~25(m2)”, “商品A”:”3616(278)”, “商品B”:”3414(198)”},
{“サイズ”:”25~30(m2)”, “商品A”:”3228(103)”, “商品B”:”3021(136)”},
{“サイズ”:”30~35(m2)”, “商品A”:”3309(60)”, “商品B”:”3045(90)”}]
 
2)外部HTMLファイル内に二つのテーブルがある場合
 
下記のようにファイル内に二つのテーブルがある場合は、<table>タグのidで指定した文字列をtableToJSON関数の$tableIDの引数に指定するとそのテーブルのデータを変換して出力できます。
 
指定しないと最初のテーブルが出力されます。
 
<table id=”サンプル1” border=1>
<caption>サンプルテーブル</caption>
<tr><th>サイズ</th><th>商品A</th><th>商品B</th></tr>
    :
</table>

<table id=”サンプル2” border=1>
<caption>サンプルテーブル</caption>
<tr><th>サイズ</th><th>商品C</th><th>商品D</th></tr>
    :
</table>
 
(作成したPHPスクリプト)
<?php
include_once ‘src/HTMLTable2JSON.php’;
$helper = new HTMLTable2JSON();
echo $helper->tableToJSON(‘http://localhost/html/sample-table.html’,FALSE,’サンプル2’,NULL,NULL,FALSE,FALSE,TRUE,FALSE,FALSE,NULL);
?>

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です