Как заключить в кавычки значения в выражении php?Понедельник заморозить мозг - PullRequest
1 голос
/ 01 ноября 2010

У меня есть фрагмент кода 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 ]

3 голосов
/ 02 ноября 2010

Я бы использовал функцию замены для fputscsv:

function my_fputcsv($handle, $fieldsarray, $delimiter = ",", $enclosure ='"'){
    $glue = $enclosure . $delimiter . $enclosure;
    return fwrite($handle, $enclosure . implode($glue,$fieldsarray) . $enclosure);
}
3 голосов
/ 01 ноября 2010

Посмотрите справку по команде fputscsv на сайте PHP: http://php.net/manual/en/function.fputcsv.php

Четвертый параметр указывает символ вложения.Это то, что вы ищите?Из того, что я понимаю, однако, пут CSV будет включать в себя кавычки, только если поле требует этого из-за либо символов разделителя, либо символов вложения, включенных в само поле.

2 голосов
/ 01 ноября 2010

Это быстрое решение, но оно работает.

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

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

echo $new_value;
0 голосов
/ 01 ноября 2010

Если вы хотите записать это без использования fputscsv, тогда вы можете использовать функцию, подобную этой, чтобы сгенерировать строку для записи в файл:

function csvify ($array)
{
   $temp = "";
   $counter = 0;
   foreach ($array as $element)
   {
      if ($counter > 0)
         $temp = $temp . ",";
      $counter ++;
      $temp = $temp . "\"$element\"";
   }
   return $temp;
}
0 голосов
/ 01 ноября 2010

Кажется достаточно простым:

 $newrow[$key] = '"' . preg_replace("(\r\n|\n|\r|\t)", "", $val) . '"';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...