phpcsvfputcsv

Forcing fputcsv to Use Enclosure For *all* Fields


When I use fputcsv to write out a line to an open file handle, PHP will add an enclosing character to any column that it believes needs it, but will leave other columns without the enclosures.

For example, you might end up with a line like this

11,"Bob ",Jenkins,"200 main st. USA ",etc

Short of appending a bogus space to the end of every field, is there any way to force fputcsv to always enclose columns with the enclosure (defaults to a ") character?


Solution

  • No, fputcsv() only encloses the field under the following conditions

    /* enclose a field that contains a delimiter, an enclosure character, or a newline */
    if (FPUTCSV_FLD_CHK(delimiter) ||
      FPUTCSV_FLD_CHK(enclosure) ||
      FPUTCSV_FLD_CHK(escape_char) ||
      FPUTCSV_FLD_CHK('\n') ||
      FPUTCSV_FLD_CHK('\r') ||
      FPUTCSV_FLD_CHK('\t') ||
      FPUTCSV_FLD_CHK(' ')
    )
    

    There is no "always enclose" option.