PHPからload data infileでcsvのインポート処理を行う際、上記のカンマの部分が余計なため取り込み時にカンマの前後で値が分割されてしまいます。
これを避けるために、一度インポートの前処理として、preg_replace関数を利用し、置換処理をかけたいと思ってますが、上記の用途を満たす正規表現はどのように書けばよいでしょうか。
preg_replace_callback() を使うと、こんな感じでできます。
<?php $s = '"23,798,456","567","1,234","9,876,543,210,123"'; $a = preg_replace_callback('/"(\d|,)+"/', function($m) { return preg_replace('/,/', '', $m[0]); }, $s); echo $s . "\n"; echo $a . "\n"; ?>
出力。
"23,798,456","567","1,234","9,876,543,210,123" "23798456","567","1234","9876543210123"
ideone.com で動作を確認したのが、こちらです。
http://ideone.com/p8bgYr