2013-11-04 115 views
0

我有一個HTML表格想解析爲JSON。PHP:解析HTML表格到JSON

<table class="valas" border="0"> 
     <tr> 
      <th>Mata Uang</th><th>Jual</th><th>Beli</th> 
     </tr><tr class="odd"> 
      <td>USD</td><td class="number">11.450,00</td><td class="number">11.300,00</td> 
     </tr><tr class="even"> 
      <td>AUD</td><td class="number">11.094,00</td><td class="number">10.494,00</td> 
     </tr><tr class="odd"> 
      <td>CAD</td><td class="number">11.169,00</td><td class="number">10.669,00</td> 
     </tr><tr class="even"> 
      <td>CHF</td><td class="number">12.719,00</td><td class="number">12.219,00</td> 
     </tr><tr class="odd"> 
      <td>EUR</td><td class="number">15.678,00</td><td class="number">15.028,00</td> 
     </tr><tr class="even"> 
      <td>GBP</td><td class="number">18.525,00</td><td class="number">17.725,00</td> 
     </tr><tr class="odd"> 
      <td>HKD</td><td class="number">1.643,00</td><td class="number">1.293,00</td> 
     </tr><tr class="even"> 
      <td>JPY</td><td class="number">118,87</td><td class="number">113,37</td> 
     </tr><tr class="odd"> 
      <td>SAR</td><td class="number">3.233,00</td><td class="number">2.833,00</td> 
     </tr><tr class="even"> 
      <td>SGD</td><td class="number">9.454,00</td><td class="number">8.854,00</td> 
     </tr> 
    </table> 

而且我有一些PHP代碼,我從谷歌上搜索發現:

<?php 
include("simple_html_dom.php"); 
$html = file_get_html('index.html'); 
$row_count=0; 
$json = array(); 
foreach ($html->find('tr') as $row) { 
     $currency = $row->find('td',0)->innertext; 
     $sell = $row->find('td',1)->innertext; 
     $buy = $row->find('td',2)->innertext; 

     $json[$currency][$sell][$buy]=true; 
    } 
    echo json_encode($json); 
    ?> 

而我得到的是對的代碼,它似乎是錯誤的:

{ 
"":{ 
    "":{ 
     "":true 
    } 
}, 
"USD":{ 
    "11.450,00":{ 
     "11.300,00":true 
    } 
}, 
"AUD":{ 
    "11.094,00":{ 
     "10.494,00":true 
    } 
}, 
"CAD":{ 
    "11.169,00":{ 
     "10.669,00":true 
    } 
}, 
"CHF":{ 
    "12.719,00":{ 
     "12.219,00":true 
    } 
}, 
"EUR":{ 
    "15.678,00":{ 
     "15.028,00":true 
    } 
}, 
"GBP":{ 
    "18.525,00":{ 
     "17.725,00":true 
    } 
}, 
"HKD":{ 
    "1.643,00":{ 
     "1.293,00":true 
    } 
}, 
"JPY":{ 
    "118,87":{ 
     "113,37":true 
    } 
}, 
"SAR":{ 
    "3.233,00":{ 
     "2.833,00":true 
    } 
}, 
"SGD":{ 
    "9.454,00":{ 
     "8.854,00":true 
    } 
} 
}null 

但我需要什麼是:

[{ 
"currency":"USD"{ 
    "sell":"11.450,00" 
    "buy":"11.300,00" 
}, 
"currency":"AUD"{ 
    "sell":"11.094,00" 
    "buy":"10.494,00" 
}, 
"currency":"CAD"{ 
    "sell":"11.169,00" 
     "buy":"10.669,00" 
}, 
"currency":"CHF"{ 
    "sell":"12.719,00" 
    "buy":"12.219,00" 
}, 
"currency":"EUR"{ 
    "sell":"15.678,00" 
    "buy":"15.028,00" 
}, 
"currency":"GBP"{ 
    "sell":"18.525,00" 
    "buy":"17.725,00" 
}, 
"currency":"HKD"{ 
    "sell":"1.643,00" 
    "buy":"1.293,00" 
}, 
"currency":"JPY"{ 
    "sell":"118,87" 
    "buy":"113,37" 
}, 
"currency":"SAR"{ 
    "sell":"3.233,00" 
    "buy":"2.833,00" 
}, 
"currency""SGD"{ 
    "sell":"9.454,00" 
    "boy":"8.854,00" 
} 
}] 

我認爲問題在於$ json變量,但很難完成。

回答

4

雖然你需要什麼不是有效的JSON ,您可以通過這種方式實現正確的結構:

$json[] = [ 'currency' => $currency, 'sell' => $sell, 'buy' => $buy ]; 
+0

對我很好。謝謝。 – SENDYYeah

+0

@SENDYYeah歡迎您考慮接受答案! – moonwave99

0

我相信這是你想要的.....

改變這一行:

$json[$currency][$sell][$buy]=true; 

到:

$json[$row_count]['currency'] = $currency; 
$json[$row_count]['sell'] = $sell; 
$json[$row_count]['buy'] = $buy; 

$row_count++; 
0

如果你從這裏代碼: https://github.com/tremblay/HTML-Table-to-JSON 你可以得到你想要這樣的答案:

htmlToJSON( '的index.html',FALSE,NULL,NULL,數組(0 => '貨幣' ,1 =>'買',2 =>'賣'),null,null,TRUE);