作成済みのHTMLテーブルデータをJSONフォーマットに変換する方法をまとめました。
ここでは下記プログラムを使用しています。
https://github.com/tremblay/HTML-Table-to-JSON/blob/master/README.md
※目次をクリックすると目次の下部にコンテンツが表示されます。
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
(外部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);
?>