我正在尝试使用 fputcsv,它几乎按照预期工作。但我遇到了一个奇怪的问题,我无法解决,也找不到任何好的文档或甚至是有同样问题的人。
当有一个字符串被放入 csv 时,大多数情况下都很好,但有时会在字符串中间出现无缘由的换行,当我进入 MySQL 数据库时,它并没有显示类似于“\n”或其他奇怪字符的东西。
它只是无缘无故地开始了一行新的内容。有时我看到一个“长”的单词被写成这样:“today is saturday.tomorrow is sunday”,然后在明天之后开始了新的一行,句号和下一个单词之间没有空格,但这似乎不是开始新一行的好理由?
当我打印出数组时,在那个位置也有相同的行结尾... 有人知道可能是什么问题吗?
如果这没有任何意义,我深感抱歉...
编辑:添加了代码和示例
当有一个字符串被放入 csv 时,大多数情况下都很好,但有时会在字符串中间出现无缘由的换行,当我进入 MySQL 数据库时,它并没有显示类似于“\n”或其他奇怪字符的东西。
它只是无缘无故地开始了一行新的内容。有时我看到一个“长”的单词被写成这样:“today is saturday.tomorrow is sunday”,然后在明天之后开始了新的一行,句号和下一个单词之间没有空格,但这似乎不是开始新一行的好理由?
当我打印出数组时,在那个位置也有相同的行结尾... 有人知道可能是什么问题吗?
如果这没有任何意义,我深感抱歉...
编辑:添加了代码和示例
public function actionExportCSV()
{
$model = Vicreg::model()->findAllByAttributes(array('event_id' => $_GET['eventid']));
if($model){
$output = fopen("php://output",'w') or die("Can't open php://output");
header("Content-Type:application/csv");
header("Content-Disposition:attachment;filename=verzorgingen.csv");
fputcsv($output, array('id','event_id','name','firstname','dob','sex','urgency','pathology','pathology_other','treatment','treatment_other','medication','medication_other','material_other','material','docs','hour_in','hour_out','station_id','nurses_id','transport_id','hospital_id','ambulance_id','closed'));
foreach($model as $vicreg) {
$array = array();
//if($vicreg->id == "83") { print_r($vicreg); exit(0); }
foreach($vicreg->attributes as $key => $attribute) {
$attribute = str_replace(' ', '', $attribute);
$array[$key] = trim(stripslashes($attribute));
}
fputcsv($output, $array, ',' ,'"');
}
fclose($output) or die("Can't close php://output");
} else {
throw new CHttpException(422, 'Geen evenement opgegeven');
}
}
示例
83,4,姓名,名字,1970-01-01,1,3,4,“普通字符串”,1,“每天2次护理。3天前因摩托车排气管烧伤。
主要是二度烧伤+开放性伤口”,,,,,,“日期”、“日期”,5,,1,,,1
“brommer.”后面有一个新行…
/n
的东西”- 你确定是/n
吗?对于换行符,语法应该是\n
,如果这在你的代码中有所区别的话。展示代码和.csv
样本将有助于阐明这个问题。 - Funk Forty NinerSELECT ASCII(SUBSTRING(column_name, 34)) ...
的东西来查找第34个字符的确切ASCII值...)看起来您的例子换行符恰好出现在句子的结尾,这似乎是一个可疑的巧合。我猜测您的源数据中只是有一个换行符。 - Matt Gibson