写入 CSV 文件时删除引号 PHP
Removing quotation marks while writing CSV files PHP
我原来的 csv 文件是这样的:
(ID, Country_code, Country, Address, Name, Age, Gender(1 or 0))
001, 1000, "America", "Washington DC", "(Mark", 25, 1
002, 1000, "America", "Washington DC", "Joe", 25, 1
003, 1000, "America, Washington DC", "Chantler)", 25, 1
004, 1001, "Japan", "Tokyo", "(Tanaka", 26, 0
005, 1001, "Japan", "Tokyo", "Satou)", 26, 0
编码后我的 csv 变成这样:
(ID, Country_code, Country, Address, Name, Age, Gender)
001, 1000, America, Washington DC, (Mark,Joe,Chantler), 25, "1
"
002, 1001, Japan, Tokyo, (Tanaka, Satou), 26, "0
"
它会自动在年龄上包含引号,并为年龄类别创建不必要的行和引号。
我该如何解决这个问题?
下面是我的代码(请忽略日文注释):
<?php
$nl = "\n"; //New line
$t = "\t"; //Tab space
$line = array(); //Multidimensional array
$result = array(); //Joint multidimensional array
$num = 0;
$num1 = 0;
$output = array(); //Array convert from multidimension array to single array
$output1 = array(); //Array merge of temp2 and test array
$ar_1=file("KEN_ALL.CSV", FILE_IGNORE_NEW_LINES);
foreach($ar_1 as $ar1)
{
$num1++;
$line[] = explode(',', $array);
}
for($i=0;$i<$num1);$i++)
{
for($j=0;$j<7;$j++)
{
while($j == 0)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 1)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 2)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 3)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 4)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$line[$i+1][$j] = str_replace(" ","", $line[$i+1][$j]); //データ値に空きスペースの削除
$line[$i+1][$j] = str_replace('"','', $line[$i+1][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j].$line[$i+1][$j];
$j++;
}
while($j == 5)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 6)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
}
$i++;
$num++;
}
function hensyu($v)
{
return implode(',', $v);
}
$output = array_map("hensyu", $result);
$f_3 = fopen("output.csv") or die ("Unable to open file");
foreach($output as $array)
{
fputcsv($f_3, explode(',',$array));
}
fclose($f_3);
?>
fputcsv 函数获取一个数组作为输入。你应该这样做:
fputcsv($f_3, $array);
我试过 运行 你的脚本。它显示了一些 php 错误和警告,我已经修复了。
<?php
$nl = "\n"; //New line
$t = "\t"; //Tab space
$line = array(); //Multidimensional array
$result = array(); //Joint multidimensional array
$num = 0;
$num1 = 0;
$output = array(); //Array convert from multidimension array to single array
$output1 = array(); //Array merge of temp2 and test array
$ar_1=file("KEN_ALL.CSV", FILE_IGNORE_NEW_LINES);
foreach($ar_1 as $ar1)
{
$num1++;
$line[] = explode(',', $ar1);
}
for($i=0;$i<$num1;$i++)
{
for($j=0;$j<7;$j++)
{
while($j == 0)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 1)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 2)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 3)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 4)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$line[$i+1][$j] = str_replace(" ","", $line[$i+1][$j]); //データ値に空きスペースの削除
$line[$i+1][$j] = str_replace('"','', $line[$i+1][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j].$line[$i+1][$j];
$j++;
}
while($j == 5)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 6)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
}
$i++;
$num++;
}
function hensyu($v)
{
return implode(',', $v);
}
$output = array_map("hensyu", $result);
$f_3 = fopen("output.csv",'a+') or die ("Unable to open file");
foreach($output as $array)
{
fputcsv($f_3, explode(',',$array));
}
fclose($f_3);
?>
在此之后,它给出的输出是 -
(ID," Country_code",Country,Address,Name(Mark," Age"," Gender(1 or 0))"
2,1000,America,WashingtonDC,JoeChantler),25,1
4,1001,Japan,Tokyo,(TanakaSatou),26,0
如果此输出不正确,请告诉我您期望的输出。
我原来的 csv 文件是这样的:
(ID, Country_code, Country, Address, Name, Age, Gender(1 or 0))
001, 1000, "America", "Washington DC", "(Mark", 25, 1
002, 1000, "America", "Washington DC", "Joe", 25, 1
003, 1000, "America, Washington DC", "Chantler)", 25, 1
004, 1001, "Japan", "Tokyo", "(Tanaka", 26, 0
005, 1001, "Japan", "Tokyo", "Satou)", 26, 0
编码后我的 csv 变成这样:
(ID, Country_code, Country, Address, Name, Age, Gender)
001, 1000, America, Washington DC, (Mark,Joe,Chantler), 25, "1
"
002, 1001, Japan, Tokyo, (Tanaka, Satou), 26, "0
"
它会自动在年龄上包含引号,并为年龄类别创建不必要的行和引号。
我该如何解决这个问题?
下面是我的代码(请忽略日文注释):
<?php
$nl = "\n"; //New line
$t = "\t"; //Tab space
$line = array(); //Multidimensional array
$result = array(); //Joint multidimensional array
$num = 0;
$num1 = 0;
$output = array(); //Array convert from multidimension array to single array
$output1 = array(); //Array merge of temp2 and test array
$ar_1=file("KEN_ALL.CSV", FILE_IGNORE_NEW_LINES);
foreach($ar_1 as $ar1)
{
$num1++;
$line[] = explode(',', $array);
}
for($i=0;$i<$num1);$i++)
{
for($j=0;$j<7;$j++)
{
while($j == 0)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 1)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 2)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 3)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 4)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$line[$i+1][$j] = str_replace(" ","", $line[$i+1][$j]); //データ値に空きスペースの削除
$line[$i+1][$j] = str_replace('"','', $line[$i+1][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j].$line[$i+1][$j];
$j++;
}
while($j == 5)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 6)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
}
$i++;
$num++;
}
function hensyu($v)
{
return implode(',', $v);
}
$output = array_map("hensyu", $result);
$f_3 = fopen("output.csv") or die ("Unable to open file");
foreach($output as $array)
{
fputcsv($f_3, explode(',',$array));
}
fclose($f_3);
?>
fputcsv 函数获取一个数组作为输入。你应该这样做:
fputcsv($f_3, $array);
我试过 运行 你的脚本。它显示了一些 php 错误和警告,我已经修复了。
<?php
$nl = "\n"; //New line
$t = "\t"; //Tab space
$line = array(); //Multidimensional array
$result = array(); //Joint multidimensional array
$num = 0;
$num1 = 0;
$output = array(); //Array convert from multidimension array to single array
$output1 = array(); //Array merge of temp2 and test array
$ar_1=file("KEN_ALL.CSV", FILE_IGNORE_NEW_LINES);
foreach($ar_1 as $ar1)
{
$num1++;
$line[] = explode(',', $ar1);
}
for($i=0;$i<$num1;$i++)
{
for($j=0;$j<7;$j++)
{
while($j == 0)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 1)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 2)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 3)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 4)
{
$line[$i][$j] = str_replace(" ","", $line[$i][$j]); //データ値に空きスペースの削除
$line[$i][$j] = str_replace('"','', $line[$i][$j]); //データ値に' " 'の削除
$line[$i+1][$j] = str_replace(" ","", $line[$i+1][$j]); //データ値に空きスペースの削除
$line[$i+1][$j] = str_replace('"','', $line[$i+1][$j]); //データ値に' " 'の削除
$result[$num][$j] = $line[$i][$j].$line[$i+1][$j];
$j++;
}
while($j == 5)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
while($j == 6)
{
$result[$num][$j] = $line[$i][$j];
$j++;
}
}
$i++;
$num++;
}
function hensyu($v)
{
return implode(',', $v);
}
$output = array_map("hensyu", $result);
$f_3 = fopen("output.csv",'a+') or die ("Unable to open file");
foreach($output as $array)
{
fputcsv($f_3, explode(',',$array));
}
fclose($f_3);
?>
在此之后,它给出的输出是 -
(ID," Country_code",Country,Address,Name(Mark," Age"," Gender(1 or 0))"
2,1000,America,WashingtonDC,JoeChantler),25,1
4,1001,Japan,Tokyo,(TanakaSatou),26,0
如果此输出不正确,请告诉我您期望的输出。