PHP导出CSV时如何不修改数据库仅移除商品描述中的多余换行符
问题解决方法
你的代码存在4处错误导致替换不生效:
str_replace()是返回替换结果的函数,不会直接修改传入的原字符串,你没有接收返回值,替换操作无效果- 用单引号包裹
\n时,PHP不会解析为换行符,只会匹配字面量的反斜杠加字母n的组合 - 你构造写入CSV的行数据时,仍然使用了未处理的
$info['descr'],没有使用处理后的$descr变量 - 操作系统不同换行符存在
\n、\r、\r\n三种格式,仅替换\n无法清理干净所有换行
修正后代码如下:
$file_open = fopen("file_empik.csv", "w"); fputcsv($file_open, $heders); // 注意这里变量名可能是拼写错误,大概率应为$headers foreach($title_from_shopify_table as $info) { // 同时替换三种换行符,接收替换后的结果 $descr = str_replace(["\r", "\n", "\r\n"], '', $info['descr']); // 如果需要保留换行逻辑仅避免CSV格式错乱,可把上方的空字符串替换为空格' ' $line_info = array('', $info['title'], $descr, $info['sku'], $info['imgsrc'], '23%', $info['vendor']); fputcsv($file_open, $line_info); } fclose($file_open); return $products_data;
修改后无需修改数据库内容,即可在写入CSV前清理掉商品描述内的所有换行,不会触发CSV格式错乱问题。
内容的提问来源于stack exchange,提问作者Kasia13130
相关产品推荐
相关产品推荐

