簡體   English   中英

如何使用 PHP 將文本文件轉換為 JSON?

[英]How can i convert a text file to JSON using PHP?

我在這樣的文本文件中有數據:

data1
data1
data1
data1
data1
data1
data1
data1
data2
data2
data2
data2
data2
data2
data2
data2
data3
data3
data3
data3
data3
data3
data3
data3

該文件可以包含任意數量的行,但數據始終位於 8 行部分。 我想要的輸出是這樣的有效 JSON:

{
"data": [
    [
        "data1",
        "data1",
        "data1",
        "data1",
        "data1",
        "data1",
        "data1",
        "data1"
    ],
    [
        "data2",
        "data2",
        "data2",
        "data2",
        "data2",
        "data2",
        "data2",
        "data2"
    ],
    [
        "data3",
        "data3",
        "data3",
        "data3",
        "data3",
        "data3",
        "data3",
        "data3"
    ]
]

}

我曾嘗試設計一個 php 腳本來執行此操作,但我對 PHP 無望,而且我幾乎是他們的,但無法正確設置格式。

$tdcount = 1; $numtd = 8; // number of cells per row
$str = "{
    \"data\": [

     ";
$f = fopen("data.txt", "r");
if ( $f === FALSE ) {
    exit;
}

 while (!feof($f)) {
     $arrM = explode(",",fgets($f));
     $row = current ( $arrM );
     if ($tdcount == 1)
         $str .= "["; $str .= "\"$row\"";
     if ($tdcount == $numtd) {
         $str .= "]";
         $tdcount = 1;
     } else {
         $tdcount++;
     }
 }

 $str .= "] ] }";
 echo $str;
 exit;
?>

所以我想知道他們是否有更簡單的方法來做到這一點,以及任何滿足我要求的示例解決方案都會很棒。

2 件主要事情 - 首先是不要嘗試構建自己的 JSON,這會很快導致問題。 其次是嘗試使用一些內置函數來使編碼更容易(代碼中的注釋)...

$numtd = 8;

// read the file into an array
$data = file("data.txt", FILE_IGNORE_NEW_LINES );

// use trim to remove any spaces
$data = array_map("trim", $data);

// array_chunk to split it into parts, output with json_encode
echo json_encode( ["data" => array_chunk($data, $numtd)], JSON_PRETTY_PRINT );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM