[英]how to write a regex to remove extra commas from string for making a csv
[英]How can I remove extra commas in a CSV file with php
我正在編寫一個PHP腳本以將CSV文件導入MySQL表。
我的問題是字段之間用逗號分隔,但是有些字段用逗號或雙引號引起來(我已經找到了雙引號的解決方案),但是沒有逗號。 這是一個例子:
SORT_COLUMN,SORT_ALPHA,GUEST_NAME,PROFILE_ID,FULL_ADDRESS,IS_TOTAL_YN
0,DIAZ REBOLLO ANGELICA,Diaz Rebollo Angelica,824990,"Blvd. Manuel Avila Camacho 36, piso 10 Lomas de Chapul DF 11000"
如您在“完整地址”字段中所見:
"Blvd. Manuel Avila Camacho 36, piso 10 Lomas de Chapul DF 11000"
帶有"
和36之前的逗號,
這是PHP CODE的一部分:
$lineseparator = "\n";
foreach(explode($lineseparator,$csvcontent) as $line) {
$lines++;
$line = trim($line," \t");
$line = str_replace("\r","",$line);
// Here I remove double quotes in the csv file
$line = str_replace(""",'',$line);
$linearray = explode($fieldseparator,$line);
$linemysql = implode("','",$linearray);
$query = "insert into $databasetable values('$linemysql');";
$queries .= $query . "\n";
@mysql_query($query);
}
fgetcsv(是標准PHP庫的一部分)是您的朋友。
好吧,大多數時候。 當然,請注意$escape
參數,該參數很奇怪,沒有用並且是損壞的。 您需要傳遞0
(注意:立即數為零,而不是PHP中的其他零位)以禁用它。
通常,我使用csv來工作;
作為字段分隔符,而\\n
作為行分隔符。
你會經常見面,
在領域,這就是為什么;
更好地分離。
編輯:
由於您的地址字段包含在"
,因此您可以使用以下內容:
$line = '0,DIAZ REBOLLO ANGELICA,Diaz Rebollo Angelica,824990,"Blvd. Manuel Avila Camacho 36, piso 10 Lomas de Chapul DF 11000"';
preg_match('/".*"/', $line, $matches);
$address = $matches[0];
$data = explode(',', $line);
$data[4] = $address;
var_dump($data);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.