【发布时间】:2016-06-21 05:11:49
【问题描述】:
我正在使用此代码读取任何 CSV 文件来构建一个数组,以便我以后可以使用它,我遇到的问题是这个特定的 CSV 文件包含带有 html 的列
$csv = array_map('str_getcsv', file('docs/foo.csv'));
$headers = $csv[0];
unset($csv[0]);
$csvarray = [];
foreach ($csv as $row) {
$newRow = [];
foreach ($headers as $k => $key) {
$newRow[$key] = $row[$k];
}
$csvarray[] = $newRow;
}
它适用于任何其他 CSV 文件,但对于这个特定的 CSV 它就不起作用:
示例 csv:
cat,name,des,ldes,datas
1,foo1,desfoo1,<h1>foo</h1><p class="finetext">sometext</p>, data1,data2,data3
3,foo3,desfoo3,<h1>foo3</h1><p class="finetext">sometext</p>, data4,data6
我得到的数组是这样的:
array (
[cat]=>1
[name]=>foo1
[des]=>desfoo1
[ldes]=>foo
... after this everything breaks...
那么,我怎样才能在这个 CSV 文件中构建一个数组,该文件具有 html 的 coulmns/values...
更新
[1] => Array
(
[cat] => 12
[name] => Foo no html
[des] => From foo no html
[ldes] => 'Basic long desc with htmls
)
[2] => Array
(
[0] =>
)
[3] => Array
(
[0] =>
basic next row html
some text inside p with class
)
这是我得到的数组,它只是分解为一个无意义的数组...
【问题讨论】:
-
我会看到两个可能的问题。换行是 Windows 或类 Unix(其中一个或另一个未正确管理)。或者编码正在报废这一切。
-
在 op 数组中你还想要这些 html 标签吗?或仅标签内的内容
-
@MasterDJon 老实说我不知道发生了什么,我正在使用 excel 构建一个基本的 csv 文件,然后我切换到 Open Office 以更好地控制如何使用分隔符,那里没有运气,然后我使用单引号 ' 手动构建一个非常简单的 csv 来将每一列括起来没有运气......
-
在你上一次的 sn-p 中,“一切都坏了”到底是什么意思?你得到什么错误信息或错误输出?
-
@aniketashtekar 是的,所有 html 和 csv 中的任何 html 都是必需的,最后一列(数据)也困扰着我,因为这些值用逗号分隔,但这不是我可以解决的问题那可是 html....