如何修剪在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));
?>
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.