From a92506d078262a519a0219b3016ee3dd7c5724f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Bl=C3=A4ul?= Date: Sun, 21 Jan 2018 16:38:05 +0100 Subject: [PATCH] Prevent quoting of sinlge-column file. Needed because auto() with... ...single-column file will not set field delimiter. This commit is a bug fix. For a test see testSaveWithDefaultSettings. --- parsecsv.lib.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 60d3efe..1c9311e 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -980,19 +980,18 @@ class parseCSV { * Enclose values if needed * - only used by unparse() * - * @param string $value Cell value to process - * @param string|null $delimiter + * @param string $value Cell value to process + * @param string $delimiter Character to put between fields * * @return string Processed value */ - protected function _enclose_value($value = null, $delimiter = null) { - if (is_null($delimiter)) { - $delimiter = $this->delimiter; - } + protected function _enclose_value($value = null, $delimiter) { if ($value !== null && $value != '') { - $delimiter_quoted = preg_quote($delimiter, '/'); + $delimiter_quoted = $delimiter ? + preg_quote($delimiter, '/') . "|" + : ''; $enclosure_quoted = preg_quote($this->enclosure, '/'); - $pattern = "/" . $delimiter_quoted . "|" . $enclosure_quoted . "|\n|\r/i"; + $pattern = "/" . $delimiter_quoted . $enclosure_quoted . "|\n|\r/i"; if ($this->enclose_all || preg_match($pattern, $value) || ($value{0} == ' ' || substr($value, -1) == ' ')) { $value = str_replace($this->enclosure, $this->enclosure . $this->enclosure, $value); $value = $this->enclosure . $value . $this->enclosure;