вот проблема
Я хотел преобразовать свои данные в формат CSV и загрузить его. все в порядке, пока файл CSV, который я скачал, и есть небольшая ошибка в файле, который будет пробел в первой строке файла.
например
Перед принудительной загрузкой
"name","age",<br/>
"brad pit","40",`
После принудительной загрузки
<br/>
"name","age",<br/>
"brad pit","40",
CSV-файл, который я скачал, и я пытаюсь открыть его с моим Excel, будет выглядеть так
"имя" | возраст
Брэд Пит | 40
Я считаю, что из-за скачанного мной файла csv в первой строке данных появилась строка внешнего пространства.
Вот код
//write csv data
$data = $this->dbutil->csv_from_result($query, $delimiter);
//create random file name
$name = rand().'_salesperson_data_'.date('d-m-y').'.csv';
if ( ! write_file('./csv/'.$name, $data))
{
echo 'Unable to write the CSV file';
}
else
{
//perform download
$file = file_get_contents("./csv/".$name); // Read the file's contents
$filename = 'salesperson_data_'.date('d-m-y').'.csv';
force_download($filename, $file);
}
источник force_download ()
if ( ! function_exists('force_download'))
{
function force_download($filename = '', $data = '')
{
if ($filename == '' OR $data == '')
{
return FALSE;
}
// Try to determine if the filename includes a file extension.
// We need it in order to set the MIME type
if (FALSE === strpos($filename, '.'))
{
return FALSE;
}
// Grab the file extension
$x = explode('.', $filename);
$extension = end($x);
// Load the mime types
@include(APPPATH.'config/mimes'.EXT);
// Set a default mime if we can't find it
if ( ! isset($mimes[$extension]))
{
$mime = 'application/octet-stream';
}
else
{
$mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];
}
// Generate the server headers
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE"))
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Transfer-Encoding: binary");
header('Pragma: public');
header("Content-Length: ".strlen($data));
}
else
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".strlen($data));
}
exit($data);
}
}
Я думал, что TRIM будет для меня последним решением, и я стараюсь делать все возможное, но все равно. Я не мог найти решение этой проблемы. Пожалуйста помоги. это застряло у меня уже 2 дня.
Спасибо заранее.