技術ブログを開設する
ログイン
もっと気軽にアウトプットできる技術ブログプラットフォーム

.csv.txtから情報を引っ張ってくるとき、うまくデータが1行に収まらず途中で変な改行が入っていることがある。

たとえば以下のようなテストデータ。

// ID,名前,性別,生年月日,携帯番号,メール,住所  
1,甲斐清名,女,1982-05-27,090-0240-5652,[email protected],福島県大沼郡会津美里町  
真々川9-5-2真々川寮1211  
2,江口顕太郎,男,1977-06-18,090-8260-0200,[email protected],東京都世田谷区駒沢公園8408  
3,佐藤希美江,女,1981-06-04,090-5841-0598,[email protected],大分県中津市今津2-8-7  
4,奥田菜美,女,1986-03-27,090-6018-9724,[email protected],大阪府大阪市平野区加美北8366  
5,藤沢邦江,女,1990-07-19,070-0542-7521,,東京都中央区  
日本橋本町2-6-5  
6,工藤大夢,男,1980-11-08,,[email protected],長野県大町市美麻1-8-2  
7,河原勝夫,男,1982-09-06,090-4381-3115,[email protected],香川県坂出市瀬居町8-1-8

行で扱おうにも途中で変な改行が入ってしまい、使い辛いので、一度改行しているデータを綺麗に直す。

$tmp_arr = explode("\n", $test_data);  //テストデータを改行ごとに配列に入れる  
$use_data = [];  //編集後の配列を用意  

$i = 0;  
foreach ($tmp_arr as $tmp) {  
    // 一定のパターンが含まれていたら正常なデータとして通す  
    if(preg_match("/(\d+?),(.+?),/", $tmp)) {  
        $i ++;  //新しい添字に入れる  
        $use_data[$i] = $tmp;  
    } else {  
        $use_data[$i] = $use_data[$i].'\n'.$tmp;  
    }  
}

すると以下のように、整頓されたデータに戻されるので、あとは $use_data を煮るなり焼くなり使っていけばOK。
ちなみに $use_data は以下のようになる。

[1] => 1,甲斐清名,女,1982-05-27,090-0240-5652,[email protected],福島県大沼郡会津美里町\n真々川9-5-2真々川寮1211  
[2] => 2,江口顕太郎,男,1977-06-18,090-8260-0200,[email protected],東京都世田谷区駒沢公園8408  
[3] => 3,佐藤希美江,女,1981-06-04,090-5841-0598,[email protected],大分県中津市今津2-8-7  
[4] => 4,奥田菜美,女,1986-03-27,090-6018-9724,[email protected],大阪府大阪市平野区加美北8366  
[5] => 5,藤沢邦江,女,1990-07-19,070-0542-7521,,東京都中央区\n日本橋本町2-6-5  
[6] => 6,工藤大夢,男,1980-11-08,,[email protected],長野県大町市美麻1-8-2  
[7] => 7,河原勝夫,男,1982-09-06,090-4381-3115,[email protected],香川県坂出市瀬居町8-1-8

関連記事

この記事へのコメント

まだコメントはありません
0
@tanakashiの技術ブログ
0
このエントリーをはてなブックマークに追加