$re = '/(\n|;|^)"([^";\n]*?)"([^";\n]+?)"([^";\n]*?)"(\n|;|$)/';
$str = 'A stable and simple RegEx, which escapes double-quotes (") in a CSV file.
## Tests ##
"Great thing?!*";"I love RegEx!";"And especially "regex101.com"!";"Just amazing..."
"Something090324*?!*";"Somethi"ng090"324*?!*";"Something090324*?!*";"Something090324*?!*"
Ignore"THIS"ItIsNotARealQuote?!*;"This"is"real!";HereIsNoQuoteSymbolAtAll;This"IsOnlyOneQuoteSymbol
CSV: Escape double-quotes (") in quoted
## Issues ##
- Does not support embedded line breaks, but you can easily modify it to support them. Note that they are currently forbitten to be more stable.
- Does only allow " for quoting. (Replace it in the whole RegEx to change this)
- Only works with ; as a separator. (Replace it in the whole RegEx to change this)
- Does not allow separator character inside of quotes string. Look at the following example:
"Example "string"";"works"
"Example "string";";"fails"
- Get\'s problems when the issue happens "too often", which means it shows up in cells which are directly side-by-side. You may work around this issue by running it multiple times:
"run 1 time ";"a string with a "small" issue";"and "another" one"
"run 2 times";"a string with a ""small"" issue";"and "another" one"
- It only works with quoted strings (no single " are escaped; only double ones)
## Changelog ##
v1.0 - 2016-01-25
- released
Author: rugk <rugk@posteo.de>';
$subst = "\1\"\2\"\"\3\"\"\4\"\5";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php