\我正在从CSV文件生成SQL文件,但有一些带斜杠的字符串文件,其值如下:
"aaa", "\", 111, 222, "bbb", "\", 333"\“之间的值将作为一个字符串生成
'\", 111, 222, "bbb", "\', 333但我希望将"\“保持原样,或将其更改为NULL,如:
'NULL', 111, 222, 'bbb', 'NULL', 333我的代码是这样的:
while (($lineArr = fgetcsv($infile))!=FALSE){
foreach($lineArr as $line){
...
if ($line == '\\"')
$line = 'NULL';
...
}
}这不起作用。我认为$line =='\\"'是不正确的,但我不知道如何处理"\“之间的整个部分。
解决方案:首先将数组更改为字符串以处理'"\"',然后将其更改回数组以进行进一步处理。
while (($lineArr = fgetcsv($infile))!=FALSE){
$string = implode(",", $lineArr);
if (strpos($string,',\",')){
$sKeepSlash = str_replace(',\",', ",NULL,", $string);
$pLineArr = explode(',', $sKeepSlash);
}
foreach($lineArr as $line){
...
}
}发布于 2013-10-09 18:08:55
使用
fputcsv()进行写入,使用fgetcsv()进行读取。
点击此处:Escaping for CSV
发布于 2013-10-09 21:02:46
首先找到斜杠的位置。例如,您可以使用array_keys。
这将返回标记的位置。然后您可以使用它来组合
$marker_positions = array_keys($array, "marker");
for ($position = $marker_positions[0]+1; $position < $marker_positions[0]; $position++) {
$single_string .= $array[$position];
}https://stackoverflow.com/questions/19268628
复制相似问题