【发布时间】:2015-06-15 09:38:10
【问题描述】:
我正在尝试从 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 行中的文本-a 第 2 行中的文本-a 第 3 行中的文本-a"
并使用我在上面使用的代码打印第一行 "第 1 行中的文字-a 然后在一个新条目中的第二行等。
我想要实现的是如下格式
echo "Name: ".$col1.", Surname: ".$col2.", Text: ".$col3."<br/>";
当我得到这个时,这不适用于多行:
- 姓名:Test,姓氏:Test2,文本:“第 1 行中的文本-a
- 姓名:,姓氏:,文字:第 2 行中的文字-a
如有任何建议,将不胜感激,谢谢
【问题讨论】:
-
你有很多未定义的变量和代码,这里没有给我们展示!
-
你到底想让我展示什么? csv 内容?
-
是的,请提供一整行 CSV 内容,只要它们在引用的单元格中,fgetcsv 就应该从内存中处理换行符
-
好的,我刚刚上传了内容 :) 检查 ID:例如 91 或 58。您可以看到换行符将信息移动到具有空 ID 的新行。它们应该在同一行。我尝试使用 str_replace 并用空格替换 /n 或 /r 但仍然没有运气
-
在 excel 中是文本 1,然后是换行和文本 2。当我将它转换为 CSV 并用记事本打开它时,它是用引号引起来的......就像没有空格的“text1text2”。您可以在我发布的屏幕截图中看到它在 PHP 中的外观。