我正在尝试从CSV文件中检索一些数据。我使用以下代码来完成CSV:
//create array for csv file
$array_data = array();
$row = 0;
if (($handle = fopen("import/pdf_data.csv", "r")) !== FALSE) {
// read the CSV from root folder "web/interval/import"
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
if ($row > 0) {
$array_data[$row] = $data;
}
$row++;
}
fclose($handle);
}
//loop through all the feature data array
foreach ($array_data as $entry_value => $array_column) {
foreach( $array_column as $value )
{
//split data
list($col1,$col2,$col3) = explode( ',', $value );
echo "Name: ".$col1.", Surname: ".$col2.", Text: ".$col3."<br/>";
当我打印列时... col1和col2很好,因为它们的单元格中只有一个单独的值。 col3可能包含多行。比方说吧(参见下面col3的一个单元格):
col3
::::::::::::::
Text-a in line 1
Text-a in line 2
Text-a in line 3
如果一个单元格中有多行,则CSV输出将如下所示: “文本 - 第1行文本 - 第2行第2行 - a第3行”
并使用上面使用的代码打印第一行 “第1行中的文字 - 然后在新的条目第二行等等。
我想要实现的是以下格式
echo "Name: ".$col1.", Surname: ".$col2.", Text: ".$col3."<br/>";
当我得到这个时,哪个不适用于多行:
非常感谢任何建议,谢谢
答案 0 :(得分:1)
CSV文件可能包含单元格中的多行值。但它需要用引号括起来。 Excel正确执行此操作 - 创建测试文件并保存为CSV。 PHP函数fgetcsv也可以正确读取这些文件。
示例文件:
"col1","col2","col3"
"test1","test2.1
test2.2
test2.3","test3"
第二行中的第二列包含多行值,这是一个完全有效的CSV文件。
这是正确的代码:
$array_data = array();
$row = 0;
if (($handle = fopen("import/pdf_data.csv", "r")) !== FALSE) {
// read the CSV from root folder "web/interval/import"
while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
if ($row > 0) {
$array_data[$row] = $data;
}
$row++;
}
fclose($handle);
}
//loop through all the feature data array
foreach ($array_data as $row) {
list($col1,$col2,$col3) = $row;
echo "Name: ".$col1.", Surname: ".$col2.", Text: ".$col3."<br/>";
}
答案 1 :(得分:0)
我可以通过另一个简单的解决方案给你建议。它正在使用fgets()
和explode()
$handle = fopen("inputfile.txt", "r");
$out = array();
if ($handle) {
while (($line = fgets($handle)) !== false) {
$arr = explode(',' $line);
$out[] = trim($arr[2]); // Supposing you want to get the third cell.
}
fclose($handle);
} else {
// error opening the file.
}
print_r($out);