Outlook Contact Export中适当的新行字符是什么?

时间:2011-05-05 19:45:05

标签: php outlook export newline

我有一个CSV解析器,它接受Outlook 2010 Contact Export .CSV文件,并生成一个值数组。

我打破新行符号的每一行,以及逗号上的每一列。它工作正常,直到有人在一个字段(通常是地址)内放置一个新行。这个新行,我假设为“\ n”或“\ r \ n”,它会爆炸它不应该的行,整个文件从那里变得混乱。

就我而言,当Business Street分为两行时会发生这种情况:

  

123 Apple博士单位A

我的代码:

$file = file_get_contents("outlook.csv");
$rows = explode("\r\n",$file);
foreach($rows as $row)
{
   $columns = explode(",",$row);
   // Further manipulation here. 
}

我试过“\ n”和“\ r \ n”,结果相同。

我想我可以计算第一行(键)中的列数,然后找到一种方法,在解析了这么多列之前不允许换行,但感觉很阴暗。

我可以尝试新行的另一个字符,它不在数据字段本身内吗?

2 个答案:

答案 0 :(得分:1)

处理CSV文件中换行符的最常用方法是“引用”包含重要字符(如换行符或逗号)的字段。可能值得研究一下你的CSV生成器是否会这样做。

我建议使用PHP fgetcsv() function,用于此目的。正如您所发现的,在逗号上拆分字符串仅适用于最简单的情况。 如果不起作用,可以使用更复杂的,据称符合RFC4180的解析器here

答案 1 :(得分:1)

我也推荐fgetcsv()

fgetcsv还会处理字符串中的逗号(引号之间)。

Interesting parsing tutorial

+1以前的答案;)

PS:fgetcsv比打开文件然后爆炸内容有点慢。但是值得的。