【问题标题】:Generate pipe delimited file through php通过php生成管道分隔文件
【发布时间】:2012-06-27 20:48:11
【问题描述】:

我的代码使用 PHP 的 fputcsv 函数生成一个 txt 文件。

对于分隔符,我尝试使用 '|'

$query = mysql_query("SELECT email, emailSource FROM session WHERE is_complete='1' ORDER by sessionid ASC")

$filename= 'here.txt';

$fp = fopen( $filename,'w');


fputcsv($fp, array('Email address', 'Email Source'));

if(mysql_numrows($query) > 0) {

    while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
            fputcsv($fp, array_values($row));
    }
}


fclose($fp);
$contents = file_get_contents($filename);
$contents = str_replace(",", "|", $contents);
file_put_contents($filename, $contents);

我得到的结果都在一行上,而不是在单独的行上显示值,而且我在标题周围也有“”。

"Email address"|"Email Source"|blah@blah.com|hi|

而不是这个:

Email address|Email Source|

blah@blah.com|hi|

请有人告诉我我做错了什么。是因为我使用 fputcsv 并保存到 txt 文件吗?

【问题讨论】:

  • 而不是使用 str_replace() 为什么不使用 fputcsv() 指定 |作为您的分隔符参数?
  • fputcsv 在每行末尾添加一个换行符,你确定它不存在吗?
  • 另外,在放置内容之前关闭 $fp 文件处理程序(也请参见上面的评论)
  • @Ayesh K,没错。 File_put_contents 打开一个全新的句柄。
  • 之后你怎么看?浏览器字体知道换行符是什么,请确保使用文本编辑器。

标签: php csv fputcsv


【解决方案1】:

摆脱 str_replace / file_get_contents/ file_put_contents 块。代替fputcsv($fp, array('...')),使用fputcsv($fp, array('...'), '|');

【讨论】:

  • 谢谢大卫,但我现在的主要错误是我仍然在标题中看到“”
  • 所以将 fputcsv 的第四个参数设置为 ''。即:fputcsv($fp, array('...'), '|', '');
  • 你说的就是enclosure参数
猜你喜欢
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
相关资源
最近更新 更多