【发布时间】:2016-08-17 09:54:28
【问题描述】:
我正在尝试读取 CSV 文件并将其转换为这样的数组。
$h = fopen("onderdelen-test.csv", "r");
echo '$parts = array(';
if($h) {
while (($data = fgetcsv($h, 1000)) !== FALSE) {
foreach ($data as $num) {
$part = explode(';', "$num");
echo "array('partid' => '$part[0]', ";
echo "'descr' => '$part[1]'), ";
}
}
fclose($h);
}
echo ')';
csv 看起来像这样
123456 ; partdescription
234567 ; partdescription, anotherdescription
345678 ; part, description and some other description
问题在于它还会在逗号上爆炸,而不仅仅是在分号上。 我尝试在描述周围添加引号,但确实在描述周围加上了一些我无法摆脱的奇怪问号。
编辑 1: 如果我在 fgetcsv 函数中使用分号作为分隔符,那么我无法通过键检索值,它只会在每次找到分号时启动另一个循环。
【问题讨论】:
-
php.net/manual/en/function.fgetcsv.php 第三个参数 - $delimiter
-
@ineersa 喜欢你杀死西方许多最快的枪支的方式:)
-
@ineersa 在底部添加了我对此的看法,我试过了,但每次都会开始一个新循环
-
PS:你不必将变量用双引号括起来
$part = explode(';', $num); -
PPS:您可以构建一个数组,然后
print_r($part);并获得该数组的可视化表示,您不必像现在这样设计输出
标签: php csv text-parsing