各行の配列を生成する fgetcsv() を使用して、CSV ファイルからデータをインポートしています。次に、この配列を implode() し、mysql_real_escape_string() を使用して、mysql クエリで使用する文字列を作成します。最終的には次のようになります。
\"2342352353\",\" \",\"\"
私が読んでいるCSVファイルの中には、最大200以上の列があるものがあります(ばかげていますが、本当です)。そのため、挿入ステートメントが非常に長くなります。それほど長くないようにするために、insert ステートメント内のスペースや空白を取り除きたいと思います。したがって、上記のステートメントは次のようになります。
\"2342352353\",,
だから私はこれを解決する2つの方法を探しています。まず、配列を調べて、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);
2 番目のアプローチは、配列のウォークスルーをスキップし、正規表現を使用して出現する を削除することです\" \"
が、区切り引用符の途中に任意の数のスペースが存在する可能性があります。
私の質問は何よりもまず、正規表現を使用してこれを行うにはどうすればよいですか? そして第二に、どちらの方法がより速いでしょうか?
正規表現の回答が得られたら、ベンチマークを行い、結果を更新します。
ありがとう!