¿Cómo citar los valores mostrados en los estados php? Lunes congelación de cerebro

StackOverflow https://stackoverflow.com/questions/4072507

  •  28-09-2019
  •  | 
  •  

Pregunta

Tengo una pieza de código php que lee los valores de un conjunto de resultados de base de datos, empujones ellos en una matriz, y los graba en un archivo CSV. Necesito forzar cada valor de estar rodeado por comillas dobles cuando se entra en el archivo CSV, y no puedo por la vida de mí recordar cómo se hace esto.

Este es el bucle que se escribe en el archivo (esto es en realidad contenía en otro bucle para pasar por cada fila; este bucle que estoy mostrando pasa a través de las columnas de la fila seleccionada en ese momento):

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

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

}

fputcsv ($ fp, $ NewRow);

Lo que necesito es que el valor de $ val a estar entre comillas dobles cuando se escribe en el archivo. En este momento, los resultados que consiguen tener este aspecto:

554,702180,25.00,6FYAK0,9090909090909090

Lo que necesito es la siguiente:

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

Puede alguien saltar comienzo mi cerebro?

¿Fue útil?

Solución

Yo usaría la función de sustituto de fputscsv:

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

Otros consejos

echar un vistazo a la orden fputscsv ayuda en el sitio de PHP: http: // php .NET / manual / es / function.fputcsv.php

El cuarto parámetro especifica un carácter recinto. ¿Es esto lo que estás buscando? Por lo que entiendo, sin embargo, una opción de venta CSV sólo incluyen las cotizaciones si el campo requiere debido a cualquiera de los personajes o caracteres delimitador recinto incluidos en el propio campo.

Esta es una solución rápida, pero funciona.

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

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

echo $new_value;

Parece bastante simple:

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

Si desea escribir sin usar fputscsv entonces se podría utilizar una función similar a este para generar una línea a escribir en un archivo:

function csvify ($array)
{
   $temp = "";
   $counter = 0;
   foreach ($array as $element)
   {
      if ($counter > 0)
         $temp = $temp . ",";
      $counter ++;
      $temp = $temp . "\"$element\"";
   }
   return $temp;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top