csv文件的一条记录中包含一个'\‘字符,我无法获得数组中键值对的确切数量。
我使用PHP fgetcsv函数,如下所示-
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
....
}我也尝试过转义字符,如下所示。
while (($data = fgetcsv($handle, 1000, ",",'"',"\\")) !== FALSE) {
....
}但这不是work.What可能的解决方案吗?
发布于 2011-12-06 14:51:27
$handle = @fopen($filename, "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
$buffer = preg_replace('/(\\\",)/','\\ ",',$buffer);
$buffer = preg_replace('/(\\\"("?),)/',' ',$buffer);
$data[] = str_getcsv($buffer);
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}发布于 2016-04-03 07:33:12
我也有同样的问题,而且解决起来太容易了。如果您的字符串括起字符是'"‘(双引号),并且您不想将反斜杠视为转义字符,则只需将双引号作为字符串封闭字符和转义字符通知两次。
$data = fgetcsv($handle, 8192, ';' , '"' , '"' );发布于 2011-11-16 19:03:00
您可能需要手动修复该文件。如果文件只有一个斜杠,这是最快的。
许多程序无法正确导出为csv格式。
如果这是经常发生的事情,您可能希望在导入信息时修复源或更正信息。
https://stackoverflow.com/questions/8150549
复制相似问题