如何在php语句中引用值?周一大脑冻结

时间:2010-11-01 19:46:29

标签: php double-quotes

我有一段php代码,它从数据库结果集中读取值,将它们推送到一个数组中,然后将它们写入CSV文件。我需要强制每个值在进入CSV文件时被双引号括起来,并且在我的生活中不能记住如何执行此操作。

这是写入文件的循环(这实际上包含在另一个循环中以遍历每一行;我正在显示的循环遍历当前所选行中的列):

foreach ($row as $key => $val){

    $newrow[$key] = preg_replace("(\r\n|\n|\r|\t)", "", $val);

}

fputcsv($ fp,$ newrow);

我需要的是$ val的值在写入文件时用双引号括起来。现在,结果我看起来像这样:

554,702180,25.00,6FYAK0,9090909090909090

我需要的是:

"554","702180","25.00","6FYAK0","9090909090909090"

有人可以开始我的大脑吗?

5 个答案:

答案 0 :(得分:3)

查看PHP站点上的fputscsv命令帮助:http://php.net/manual/en/function.fputcsv.php

第四个参数指定机箱字符。这是你想要的?但据我所知,如果字段需要它,则CSV put将仅包括引号,因为字段本身包含了分隔符字符或封装字符。

答案 1 :(得分:3)

我会使用fputscsv的替代函数:

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

答案 2 :(得分:2)

这是一个快速解决方案,但它确实有效。

$value = '554,702180,25.00,6FYAK0,9090909090909090';

$new_value = '"' . implode('","', explode(',', $value)) . '"';

echo $new_value;

答案 3 :(得分:0)

看起来很简单:

 $newrow[$key] = '"' . preg_replace("(\r\n|\n|\r|\t)", "", $val) . '"';

答案 4 :(得分:-1)

如果您想在不使用fputscsv的情况下编写它,那么您可以使用与此类似的函数生成一行来写入文件:

function csvify ($array)
{
   $temp = "";
   $counter = 0;
   foreach ($array as $element)
   {
      if ($counter > 0)
         $temp = $temp . ",";
      $counter ++;
      $temp = $temp . "\"$element\"";
   }
   return $temp;
}