如何修剪在PHP中读取CSV文件的附件(“一些文本”)

如何修剪在PHP中读取CSV文件的附件(“一些文本”)

问题描述:

I am trying to use a web API to get some data. The problem is that I need to convert CSV data to JSON format.

<?php
    // allows us to skip the first row while looping through the file 
     $i = 0;
    //web api
    $stocks = "https://www.google.com/finance/historical?output=csv&q=aapl";

    //read csv file
    $handle = fopen($stocks, 'r');
    //loop through CSV file
    while (($data = fgetcsv($handle, 2000, ",")) !== FALSE) {    
        if ($i > 0) { 
            trim($data[0]);
            trim($data[1]);
            trim($data[2]);
            trim($data[3]);
            trim($data[4]);
            trim($data[5]);

            // an array
            $chartArray[] = $data;
        }
        $i++;
    }

   fclose($handle);

   //Convert PHP Array to JSON String
   print (json_encode($chartArray));

?>

Screenshot

As you can see from the image, I am getting JSON with enclosure. ["19-May-17","153.38","153.98","152.63","153.06","26960788"].

Please let me know if there is a solution. Thank you in advance!

You will never ever put non-string values into a json. Never.

Otherwise. You can simply convert the number parts to number, and the date parts to php date.

Something like this:

while (($data = fgetcsv($handle, 2000, ",")) !== FALSE) {    
    if ($i > 0) { 

        $data[0] = date('Y-m-d', strtotime($data[0]));
        $data[1] = intval($data[1]);
        $data[2] = intval($data[2]);
        $data[3] = intval($data[3]);
        $data[4] = intval($data[4]);
        $data[5] = intval($data[5]);

        $chartArray[] = $data;
    }
    $i++;
}

But as soon as you convert it to a json, it will auto-place the " chars. So you will need to convert the strings at reciever (client?) side.

You misunderstand what JSON is. This is what your data looks like when it is in JSON format: It must be a series of values that are legal in the JSON subset of javascript syntax (string, int, array, etc.). There is no problem to solve. The function that consumes JSON will know what to do.