我有一个我正在使用的CSV文件,所有字段都以逗号分隔.但是一些字段本身包含逗号.在原始CSV文件中,包含逗号的字段用引号封装,如此处所示;
"Doctor Such and Such, Medical Center","555 Scruff McGruff, Suite 103, Chicago IL 60652",(555) 555-5555,,,,something else
Run Code Online (Sandbox Code Playgroud)
我正在使用的代码如下
<?PHP
$file_handle = fopen("file.csv", "r");
$i=0;
while (!feof($file_handle) ) {
$line = fgetcsv($file_handle, 1024);
$c=0;
foreach($line AS $key=>$value){
if($i != 0){
if($c == 0){
echo "[ROW $i][COL $c] - $value"; //First field in row, show row #
}else{
echo "[COL $c] - $value"; // Remaining fields in row
}
}
$c++;
}
echo "<br>"; // Line Break to next line
$i++;
}
fclose($file_handle);
?>
Run Code Online (Sandbox Code Playgroud)
问题是我得到的字段用逗号分成两个字段,这会混淆我应该拥有的列数.
有什么方法可以在引号内搜索逗号并转换它们,或者用其他方式来处理它?
您可以使用"enclosure"参数.请参阅fgetcsv 文档.
$handle = fopen("file", "r");
if ($handle ) {
while (($line = fgetcsv($handle, 2048, ",", '"')) !== FALSE) {
print_r( $line)."\n";
}
fclose($handle);
}
Run Code Online (Sandbox Code Playgroud)
输出:
$ cat file
"Doctor Such and Such, Medical Center","555 Scruff McGruff, Suite 103, Chicago IL 60652",(555) 555-5555,,,,something else
$ php test.php
Array
(
[0] => Doctor Such and Such, Medical Center
[1] => 555 Scruff McGruff, Suite 103, Chicago IL 60652
[2] => (555) 555-5555
[3] =>
[4] =>
[5] =>
[6] => something else
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1241 次 |
| 最近记录: |