PHPの正規表現あれこれ

ATOMRSS

CSVデータのパース(分割)

Perl + 正規表現で、CSVデータをパースしている情報があったので、PHPでもできのかな?とおもってやってみました。


//参考サイト:http://www.din.or.jp/~ohzaki/perl.htm#CSV2Values
//処理対象のCSV定義
//   1. 基本的にコンマで区切った部分がスペースを含めて値である.
//   2. 値にコンマやダブルクウォートが含まれる場合は, 値全体をダブルクウォートで囲む.
//   3. 値に含まれるダブルクウォートは "" となる. 
//※値の中に改行コードがあるデータは対象外です。
$str = '47201,"90101","9,010154","オキナワケン","ナハシ","アカミネ","沖縄県","那""覇市","赤嶺",0';
 
//処理を容易にするために末尾にカンマを付与します。
$str = preg_replace('/(?:\x0D\x0A|[\x0D\x0A])?$/',',', $str);
 
//パース
preg_match_all('/("[^"]*(?:""[^"]*)*"|[^,]*),/', $str, $match);
 
//"値"→値にトリミング
$result = preg_replace('/^"(.*)"$/','$1', $match[1]);
//$result = array_map(create_function('$ele', 'return trim($ele,"\"");'), $match[1]);
 
//値中の""を"に変換
$result = str_replace('""', '"', $result);
 
print_r($result);
//↓
//Array
//(
//    [0] => 47201
//    [1] => 90101
//    [2] => 9,010154
//    [3] => オキナワケン
//    [4] => ナハシ
//    [5] => アカミネ
//    [6] => 沖縄県
//    [7] => 那"覇市
//    [8] => 赤嶺
//    [9] => 0
//)

アップロードしたファイル

ファイルはアップロードされていません。

PDFLib | A library for processing PDF on the fly プレゼン公開・共有サイト handsOut.jp オープンタイプ株式会社 チーム・マイナス6% - みんなで止めよう温暖化

基本情報

ソースコードID:
498
登録者:
台北猫々
登録日時:
2008/04/23 21:31
最終更新日時:
2008/07/01 21:14
登録ページ数:
14
アクセス数:
6206
タグ:
php 正規表現 csv 半角カタカナ ascii ひらがな 半角英数字 カタカナ 全角 3桁毎カンマ区切り
編集権限:
ログインユーザ全員
ブックマーク:
  • codeなにがしブックマークに追加する 0 users
  • このページをはてなブックマークに追加
  • このページを del.icio.us に追加

GoodJob

  • GoodJob
  • 22

GJGJ

GJGJ

編集者一覧

  • 台北猫々

GoodJobしたユーザ

  • ryotaro

ブックマークコメント