【发布时间】:2011-11-22 01:48:15
【问题描述】:
我有这个包含机场代码和城市名称的数组(大约 3500 行)。
code,city
"Abilene, TX ",ABI
"Adak Island, AK ",ADK
"Akiachak, AK ",KKI
"Akiak, AK ",AKI
"Akron/Canton, OH ",CAK
"Akuton, AK ",KQA
"Alakanuk, AK ",AUK
"Alamogordo, NM ",ALM
我需要将该文件转换为 php 数组。到目前为止,这是我的代码:
if(($handle = fopen('test.csv', 'r')) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ',', '"')) !== FALSE) {
echo '<pre>';
print_r($data);
echo '</pre>';
}
fclose($handle);
}
虽然我正在为 fgetcsv 函数设置分隔符和包围字符,但结果是:
Array
(
[0] => code
[1] => city
"Abilene
[2] => TX "
[3] => ABI
"Adak Island
[4] => AK "
[5] => ADK
"Akiachak
[6] => AK "
[7] => KKI
"Akiak
[8] => AK "
[9] => AKI
"Akron/Canton
[10] => OH "
[11] => CAK
"Akuton
[12] => AK "
[13] => KQA
"Alakanuk
[14] => AK "
[15] => AUK
"Alamogordo
[16] => NM "
[17] => ALM
)
【问题讨论】:
-
你确定这些是
"字符,而不是 MS 喜欢到处撒的花哨的 66 和 99? -
对我来说很好。可能是您的
PHP_VERSION中的一个错误。 (它是什么?)或者尝试var_dump(array_map("str_getcsv", file($fn)))。 -
@StefanPantke:现在你提到了。他只得到了一张唱片。因此,无法识别的是换行符,因此引号也被误解了。
-
另见php.ini设置
auto_detect_line_endings -
@StefanPantke:
1只是print_r()的结果,它被echo写出在 print_r 本身已经抛出它的输出之后。 (为什么它也不在 pre 标签内。)