dat から1行ずつ抜き出して xml 書き出し
タイトルの通りなんですが、あるプログラムではログファイル用にdatファイルが使われてて、内容を区切り文字で結合したものを1行1データって形で保存されてる。でも最近メインで使ってるシステムは1ファイル1データのxmlファイルで保存してる。
で、管理している人は思いました。「なんかもうdatの方のプログラムも新しいシステムの方に統合しちゃえばよくね?でもdatファイルの中のデータの量すげーな。これ、新しいシステムの管理画面から1つ1つ私が入力していくの?いや、それ余裕で無理。なんとかしてdatファイルの中身をxmlファイルに変更できないものかな・・・。ラク~にxmlファイルに変換さえできれば後はなんとかなるのに><」
じゃあせっかくPHP勉強中だから、挑戦してみる!
というのが今回の趣旨。web上で使うものじゃなくて、あくまでローカルで手作業をなんとかして楽にできんものかという下心からの発想。PHPってweb上でっていうイメージだったけど、別にローカルでこういう使い方しても問題ないやんね。多分。
データファイルの中身
datファイルの中身はこんな感じで「&&」区切りでID番号、名前、ページURL、画像のパス、カテゴリ、コメントが入ってる。(まぁ当然ここに書いてあるのは適当なサンプルテキストなんだけど)
5&&商品その5&&http://www.example.com/.hoge5.html&&image/sample5.jpg&&カテゴリ1&&カテゴリ2&&カテゴリ3&&商品その5の説明文です。
4&&商品その4&&http://www.example.com/.hoge4.html&&image/sample4.jpg&&カテゴリ1&&&&カテゴリ3&&商品その4の説明文です。
3&&商品その3&&http://www.example.com/.hoge3.html&&image/sample3.jpg&&&&&&カテゴリ3&&商品その3の説明文です。
2&&商品その2&&http://www.example.com/.hoge2.html&&image/sample2.jpg&&&&カテゴリ2&&&&商品その2の説明文です。
1&&商品その1&&http://www.example.com/.hoge1.html&&image/sample1.jpg&&カテゴリ1&&&&&&商品その1の説明文です。
カテゴリは3つあって、登録画面でカテゴリを選択したデータはその部分にカテゴリ名が入ってる。選択してないものは空。このファイルから1行ずつ抜き出してこういう内容のxmlファイルを書き出していきたい。
<?xml version="1.0" encoding="utf-8"?>
<entry>
<id>000001</id>
<name>商品その1</name>
<link>http://www.example.com/.hoge1.html</link>
<image>image/sample1.jpg</image>
<category1>2</category1>
<category2>1</category2>
<category3>1</category3>
<comment>商品その1の説明文です。</comment>
</entry>
<category1>2</category1>の部分は中身のテキストはいらんから、内容が入ってたら2、空だったら1を入れたい。
考えた手順
- datファイルから内容を全部読み込む。
- 読み込んだファイルを&&区切りで分割して変数に代入。
- 想定してるxml形式のソース中に変数入れて形を整える。
- xmlファイルを開く、というか作って書き込み。
idに関しては5桁にしたい。
例えば1なら00001、100なら00100、みたいな。要するに頭に0つけて何がなんでも5桁にしたいということ。そういうフォーマットにはsprintf関数が使えそう。5桁に揃えるなら「%05d」を指定すればいける。
sprintf フォーマットされた文字列を返す
そしてxmlファイルのファイル名は「data.ID(5桁).xml」という名前にしたい。
完成したソース
今までこのブログでPHPの勉強エントリに書いてたものの中から抜粋しました的なものばかりでなんとかなった。なんとかなったというより、そういう方法しか知らないので他にどうしたらいいのかも分からないのだけれど。目新しいのは上に書いたsprintf関数くらい。書き出したxmlファイルはlogっていうフォルダを作っておいてその中に作成する予定。
いざ・・・実行する!
出た・・・出た!
空っぽだったlogフォルダにxmlファイルが現れた!中身確認する。
予定通り!気分爽快ヽ(´ー`)ノ
なんか嬉しい。超嬉しい。ぷろぐらみんぐってすごいや。
<< magic_quotes_gpcとstripslashes関数 | PHP ファイルのアップロード 勉強メモ >>
トラックバック
このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/235
コメント (2)
あぁ~、これやりたい。
でも僕phpやってないからな~。というのも最近はflexに興味あってでもデーターベースの知識が無いため悩んでた。
これを機に一丁始めます!
投稿者: painkiller | 2009年02月26日 09:02
>painkillerさん、こんばんわー。
Flexとか未体験ゾーンすぎて尊敬しまくりです(n'∀')η
Flexっていう単語とどんな事をするものか、くらいしか分からない><
なんか新しい事ってちょっとうまくいくとすごくテンション上がってやる気に繋がりますねー。
投稿者: Red | 2009年02月26日 21:28