余分な空白ヘッダーを削除。私は前に、ヘッダー空白でいくつかの問題に直面したトリムcsvファイル内のデータと、私は今、私のデータベースにCSVデータをインポートするために、このコードを使用してい
if (($handle = fopen($source_file, "r")) !== FALSE) {
$columns = fgetcsv($handle, $max_line_length, ",");
$esc_columns = array();
foreach ($columns as &$column) {
$column1 = str_replace(".","",$column);
$column = preg_replace("/\s*,\s*/",",",$column1);
$esc_columns[] = escapeSqlName($column);
}
$esc_columns[] = escapeSqlName('custgroup');
$esc_columns[] = escapeSqlName('user_id');
$esc_columns[] = escapeSqlName('mylabel');
$x = preg_replace("/\s*,\s*/", ",", implode(',',$esc_columns));
$xx = str_replace(' ', '', $x);
$sqlsmttempl = 'INSERT DELAYED INTO %s (%s) VALUES (%s)';
$sqlsmt = sprintf($sqlsmttempl,
escapeSqlName($target_table),
$xx,
implode(',',array_fill(0, count($esc_columns), '?'))
);
$db = new PDO("mysql:host=localhost;dbname=Data;","root","");
$insert = $db->prepare($sqlsmt);
while (($data = fgetcsv($handle, $max_line_length, ",")) !== FALSE) {
while(count($data) < count($columns)) {
$data[] = NULL;
}
$data[] = $_POST['custgroup'];
$data[] = $_POST['user_id'];
$data[] = $_POST['mylabel'];
$insert->execute($data);
}
(フランシス・アビラのおかげで)ので、追加しました
$x = preg_replace("/\s*,\s*/", ",", implode(',',$esc_columns));
$xx = str_replace(' ', '', $x);
ここで空白は無視されます。
しかし、データの空白はどうですか?(ちょうどコンマの前後にあります)私はtrim($data)
を試しましたが、間違っていると私は知っています。
とヘッダのような他の余分なカンマ、含まれているとき、私は、アップロードを処理するための方法を見当もつかない:?
Name,Address,Phone,,,,,
だけでなくName,Address,Phone
の(間違った)(訂正)
何かアドバイスを事前に感謝。
この素晴らしい答えに感謝します。申し訳ありませんがもう1つ質問できますか?どうやって私のCSVデータを整理してRTMできますか? –
もう一度ありがとうございます。しかし、$ xxは私のヘッダーです。私がトリミングする必要があるのは、次のデータです。 –