我正在使用 fgetcsv() 从 CSV 文件中导入数据,它为每一行生成一个数组。然后我 implode() 这个数组并使用 mysql_real_escape_string() 创建一个字符串以用于 mysql 查询。它最终看起来像这样:
\"2342352353\",\" \",\"\"
我正在阅读的一些 CSV 文件有多达 200 多列(荒谬,但确实如此),因此插入语句变得非常长。为了让它们不那么冗长,我想去掉插入语句中的任何空格或空格。所以,上面的语句应该变成:
\"2342352353\",,
所以我正在寻找两种方法来解决这个问题。首先,我可以遍历数组,并使用 trim() 查找任何带有空格的条目并将它们设为空白。然后我可以像这样对结果字符串执行 str_replace() :
for ($x=0; $x<sizeof($data); $x++) {
$data[$x] = trim($data[$x]) == '' ? '' : $data[$x];
}
$insert_string = '\\"' . mysql_real_escape_string(implode('","', $data)) . '\\"';
str_replace('\"\"', '', $insert_string);
第二种方法是跳过遍历数组并仅使用正则表达式删除任何出现的\" \"
,但在分隔引号的中间可能有任意数量的空格。
我的问题是第一个也是最重要的,我如何使用正则表达式来做到这一点?其次,哪种方式会更快?
一旦我得到正则表达式的答案,我会做一些基准测试并更新结果。
谢谢!