当前位置: 首页 > 面试题库 >

fputcsv和换行代码

齐晟
2023-03-14
问题内容

我在PHP中使用fputcsv来输出数据库查询的逗号分隔文件。在Ubuntu的gedit中打开文件时,它看起来是正确的-
每个记录都有一个换行符(没有可见的换行符,但是您可以告诉每个记录是分开的,在OpenOffice电子表格中打开它可以让我正确地查看文件。)

但是,我们将这些文件发送到Windows上的客户端,在他们的系统上,文件排成一行,很长。在Excel中打开它,它根本无法识别多行。

我在这里已经阅读了几个非常相似的问题,其中包括这个问题,该问题包含了一个指向内容丰富的Great NewlineSchism解释的链接。

不幸的是,我们不能仅仅告诉客户在“更智能”的编辑器中打开文件。他们需要能够在Excel中打开它们。是否有任何编程方式来确保添加正确的换行符,以便可以在任何OS上的电子表格程序中打开文件?

我已经在使用自定义函数将所有值都用引号引起来,因为fputcsv是有选择的。我试图做这样的事情:

function my_fputcsv($handle, $fieldsarray, $delimiter = "~", $enclosure ='"'){

        $glue = $enclosure . $delimiter . $enclosure;

    return fwrite($handle, $enclosure . implode($glue,$fieldsarray) . $enclosure."\r\n");

}

但是,当在Windows文本编辑器中打开文件时,它仍显示为单个长行。


问题答案:

我最终在专家交流上得到了答案。这是起作用的:

function my_fputcsv($handle, $fieldsarray, $delimiter = "~", $enclosure ='"'){
   $glue = $enclosure . $delimiter . $enclosure;
   return fwrite($handle, $enclosure . implode($glue,$fieldsarray) . $enclosure.PHP_EOL);
}

用于代替标准fputcsv。



 类似资料:
  • 寻找 代码是;制表符分隔。 注意:标题和段落从不相同。 查找: 替换为: 首先,我要感谢你的帮助

  • 问题内容: 我面对的是153个字符长的特定行。现在,我倾向于在120个字符后断开字符(当然,这在很大程度上取决于我所在的位置和当地的约定。)但是,老实说,我在任何地方断开该行都会使它看起来很糟。因此,我正在寻找一些有关该怎么做的想法。 这是一行: 我对如何/在何处打破界限(以及为什么)以及缩短界限本身的想法持开放态度。 我们不是Java商店,也没有针对此类事情的本地约定,或者显然我会简单地遵循它们

  • 一个 Markdown 段落是由一个或多个连续的文本行组成,它的前后要有一个以上的空行(空行的定义是显示上看起来像是空的,便会被视为空行。比方说,若某一行只包含空格和制表符,则该行也会被视为空行)。普通段落不该用空格或制表符来缩进。 「由一个或多个连续的文本行组成」这句话其实暗示了 Markdown 允许段落内的强迫换行(插入换行符),这个特性和其他大部分的 text-to-HTML 格式不一样(

  • 自动调整连字 选取的连字符连接设置将影响各行的水平间距和文字在页面上的美感。连字符连接选项确定是否可用连字符连接字,如果能,还确定允许使用的分隔符。 1要使用自动连字符连接,请执行下列任一操作: 要启用或停用自动连字符连接,请在 “段落 ”调板中选择或取消选择 “连字符连接 ”选项。 要对特定段落应用连字符连接,请首先只选择要影响的段落。 要选取连字符连接词典,请从 “字符 ”面板底部的 “语言

  • 我已经创建了一个服务代理。 代理(请求类型为)和实际服务(请求类型。)之间有一个处理器。 进入< code > process(Exchange Exchange)方法的交换体属于< code>TypeA。 我能够使用下面的代码行访问数据 现在,我想将此信息更改为。 我使用下面的代码添加主体。 我得到了 现在,我想使用调用真正的服务,它来自。 我尝试进入处理器,但出现以下异常 真正的Web服务没有

  • 问题内容: 当我使用fputcsv将行写出到打开的文件句柄时,PHP会将封闭字符添加到它认为需要的任何列中,而其他列将不包含任何封闭物。 例如,您可能会得到这样的一行 除了在每个字段的末尾添加虚假空格之外,是否有任何方法可以强制fputcsv始终将列包含在外壳中(默认为“”)? 问题答案: 不,fputcsv()仅在以下情况下封闭该字段 没有“始终封闭”选项。