csv文件 内容转义_写入csv文件时转义分号字符

本文介绍了一个用于处理CSV值的函数,特别关注新行、双引号和分隔符的转义,确保在Windows环境下西里尔语言环境的Excel和ODBCCSV解析器兼容。函数通过编码转换避免了数据混乱,适用于多种编程环境和字符编码.
摘要由CSDN通过智能技术生成

我为每个CSV值使用此函数来正确传递它 . 仅在包含新行符号,双引号或分隔符时才引用值 . 实际上,唯一要逃避的值是双引号符号 . 所有其他单元格内容都会进入并在Excel中正确显示 .

使用Windows下的西里尔语言环境中的各种版本的Excel和ODBC CSV解析器进行检查 .

/**

* This function escapes single CSV value if it contains new line symbols, quotes or separator symbol and encodes it into specified $encoding.

*

* @param string $source - origin string

* @param string $sep - CSV separator

* @param string $source_encoding - origin string encoding

* @param string $encoding - destination encoding

*

* @return string - escaped string, ready to be added to CSV

*

* @example echo escapeStringCSV("Hello\r\n\"World\"!");

* will output

* "Hello

* ""World""!"

*/

function escapeStringCSV($source, $sep=';', $source_encoding='utf-8', $encoding="windows-1251//TRANSLIT"){

$str = ($source_encoding!=$encoding ? iconv($source_encoding, $encoding, $source) : $source);

if(preg_match('/[\r\n"'.preg_quote($sep, '/').']/', $str)){

return '"'.str_replace('"', '""', $str).'"';

} else

return $str;

}

所以用法可以是这样的:

while($row = mysql_fetch_assoc($res)){

foreach($row as $val){

$csv .= escapeStringCSV($val).';';

}

$csv .= "\r\n";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值