2011-01-04 6 views
0

個人用のデータを含む一連のテキストファイルがあります。私はスクリプトを使ってそれらを実行し、それらをmysqlデータベースに書きたいと思っています。 私がこれまで行ってきたことは、テキストファイルを文字列に読み込んだり、 ""で文字列を爆発させてから、配列を実行して必要な情報を見つけることでした。しかし、それにはいくつかの問題があります。誰かがもっと良い解決策を知っているかもしれません。ファイルのテキストをデータベースに転送するPHPスクリプト

ベースのテキストファイルは次のようになります。

Name: Marius 
Address 1: Street 
Address 2: Town 
Address 3: Country 
etc 

この問題は、私がどれくらい長い間、すなわちストリートの「価値」を知る方法がないということです。 'Somestreet'や 'Some Street'や 'Some Street 1337'などがあります。これはすべての分野で非常に重要です。

このテキストを配列に変換する方法はありますか?すべての項目で、キーとして ":"で終わる文字列が使用され、 ":"は値として扱われます。

+1

レコードは実際には1行に入っていますか?彼らはタブまたは同様の区切り文字を持っていますか? – Dogbert

+0

それはあるライン上にあるものと、あるライン上にあるものがあります。区切り記号なしの単語間の空白を除いて – Marius

+0

pastebin.comに実際のデータの数行を投稿できますか? – Dogbert

答えて

2

コメント内のヒント:タブ/ cr/lfなどの区切り文字がない場合は、文字列にデータを解析するのに十分な情報がありません。

キーのセットが限られている場合は、このセットを追加情報として指定できます。
データをmysqlテーブルに挿入したいので、キーはと限定されており、一意であると仮定します
これらのキー文字列の配列で、あなたのパーサーアルゴリズムは、このように動作します:

1 explode the string at ":" 
2 loop through the resulting array, where you should find a structure like this: 
    [some or no value][space or other delimiter][known key] 
2.1 remember the key from the previous loop (empty as default) 
2.2 since the keys should be unique, loop through the array of known keys 
2.2.1 if a key matches the current string structure from the right, you can 
    strip this key off the right side of the string, trim the string and you 
    have the current value 
2.2.2 if you found a value, put both into the result array: 
    $arr[previous key] = [current value] 

これはトリックを行う必要があります。

+0

爆発:それは良い考えです、それはまだ考えていませんでした! – Marius

+0

しかし、あなたがキーストリングを知らないなら、それはまったく助けにならないでしょう... –

+0

私はキーストリングを知っています、それはちょうどかなりランダムな値です。だから絶対に試してみる価値がある。 – Marius

関連する問題