简体   繁体   中英

escape comma and add new column while creating a csv file

I am converting a Delimited FLAT file to CSV and it has some data which as comma in between them. For eg the product name Iphone 6splus, 32 gb. Since this a description of the product and can have special characters also. How do i escape the comma as because of this fputcsv is considering this data as a new line. which is wrong. I am using

$handle = fopen("data.txt", "r");
$lines = [];
$row_count=0;
if (($handle = fopen("data.txt", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
        if($row_count>0)
        {
                    $lines[] = $data;
        }
        $row_count++;
    }
    fclose($handle);
}
$fp = fopen('example.csv', 'w');
foreach ($lines as $line) {
    fputcsv($fp, split('\*\*', $line));
}
fclose($fp);

I need to escape the value before i start converting the data and store into csv

Enclose the field in quotes, eg

field1_value,field2_value,"field 3,value",field4, etc...

To encode a quote, use ", a single quote symbol in a field will be encoded as "", and the whole field will become """". So if you see the following in eg Excel:

---------------------------------------
| regular_value |,,,"|  ,"", |"""   |"|
---------------------------------------

the CSV file will contain:

regular_value,",,,""",","""",","""""""","""" A comma is simply encapsulated using quotes, so , becomes ",".

A command and quote needs to be encapsulated and quoted, so "," becomes """,""".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM