我正在尝试解析一个 csv 文件,其中我的数据以如下格式给出:
"Total","Shazam (DE)","Total",,"215,611","538","£935.97","£60.77"
现在,如果我给 fgetcsv() 如下所示:
$values = fgetcsv($f,8098);
它返回我一个数组:
array(9) {
[0]=>
string(15) ""Total""
[1]=>
string(27) ""Shazam (DE)""
[2]=>
string(15) ""Total""
[3]=>
string(1) ""
[4]=>
string(9) ""215"
[5]=>
string(9) "611""
[6]=>
string(11) ""538""
[7]=>
string(19) ""£935.97""
[8]=>
string(19) ""£60.77"
"
}
但是现在,如果我给出一个 if 语句,例如:
$values = fgetcsv($f,8098);
if ($values[0] == "Total")
echo "Hello";
它没有回显任何东西,为什么条件不满足?它与封闭引号有关吗?
我什至尝试转义引号,例如 .
if ($values[0] == '\"Total\"')
echo "Hello";
但没有用。
我需要为此更改任何 .ini 设置吗?请帮我。
编辑:我尝试做 var_dump ,它确实显示了我的值包含引号:
array(9) {
[0]=>
string(15) ""Total""
[1]=>
string(27) ""Shazam (DE)""
[2]=>
string(15) ""Total""
[3]=>
string(1) ""
...
}
但即使
$values[0] == "\"Total\""
没用。什么应该是正确的比较器?
更新:经过几个小时漫无目的的反复试验,终于发现了一些烦人的东西,但它解决了我的问题。
最初,当我尝试打开我的 csv 文件时,它打开了一个记事本,内容为ÿþD""。我所做的是,复制了整个文件内容并创建了一个具有相同名称的新 csv 文件,令我惊讶的是,它起作用了。
旧文件在 MS-EXCEL / NOTEPAD 中打开得很好,但在 excel 中,每一行都显示在一个单元格中。
我的问题是,.csv fromat 有什么问题?有没有人遇到过这样的问题?