我試圖將一些製表符分隔的數據轉換爲我可以使用的更好的格式。 JSON會很棒。製表符分隔的數據到JSON
數據例子是在這裏:http://www.nlaa.ca/results/rr/2013/20130728tely10results.php
我已經下載了全部數據,並每年在它自己的文本文件。從那裏,我將它們拼湊起來,並將它們運行成爲一個foreach並逐行閱讀它們。像這樣:
// Grab all the .txt files
foreach (glob('src-data/*.txt') as $filename) {
$handle = fopen($filename, 'r');
if ($handle) {
// run line by line through the files
while (($line = fgets($handle)) !== false) {
// grab the fields
$clean = preg_split("/ +/", $line);
從這裏,我希望把所有的線在一個巨大的關聯數組:
// All the fields
$position = $clean[1];
$name = $clean[3] . " " . $clean[4];
$time = $clean[5];
$class = $clean[6];
$class_place = $clean[7];
$runners['position'] = $position;
$runners['name'] = $name;
$runners['time'] = $time;
$runners['class'] = $class;
$runners['class place'] = $class_place;
這八九不離十工作,但它僅創建每個.txt文件的一個數組我有。
當我做print_r($runners);
我得到兩個數組 - 一個用於我在該目錄中的兩個示例.txt文件中的每一個。
我想將每個新行都推送到我的$runners[]
數組中,因爲我循環它。
我在這裏的最終目標是創建一個大JSON文件,我可以在路上使用Js。我認爲只要運行json_encode($runners)
就可以工作,如果我能得到$runners
的工作,但感謝任何建議。謝謝!
下面是完整的代碼,我使用的,只是要確定:
<?php
$runners = [];
// Grab all the .txt files
foreach (glob('src-data/*.txt') as $filename) {
$handle = fopen($filename, 'r');
if ($handle) {
// run line by line through the files
while (($line = fgets($handle)) !== false) {
// grab the fields
$clean = preg_split("/ +/", $line);
// All the fields
$position = $clean[1];
$name = $clean[3] . " " . $clean[4];
$time = $clean[5];
$class = $clean[6];
$class_place = $clean[7];
$runners['position'] = $position;
$runners['name'] = $name;
$runners['time'] = $time;
$runners['class'] = $class;
$runners['class place'] = $class_place;
$runners[] = $clean;
}
print_r($runners);
// write to json file
$jsonwrite = fopen('runners.json', 'w');
fwrite($jsonwrite, json_encode($runners));
fclose($jsonwrite);
fclose($handle);
} else {
echo "Error opening file";
}
}
?>
爲什麼不使用fgetcsv()代替手動解析原始數據行?您可以非常輕鬆地自定義分隔符。 –
謝謝馬克 - 我給了這個快速嘗試,但似乎並沒有太多。所有列在它們之間具有不同數量的空格。也許fgetcsv()可以以某種方式處理。我會谷歌!謝謝 – saltcod