18

私は、必要なことを達成するためのより良い方法が無数にあるプロジェクトの 1 つに取り組んでいますが、選択の余地がなく、この方法で実行する必要があります。ここにあります:

Web フォームがあり、ユーザーが入力して送信すると、フォーム データを使用して人間が読み取れるテキスト ファイルが作成されます。次のようになります。

field_1: value for field one

field_2: value for field two
more data for field two (field two has a newline in it!)

field3: some more data

私の問題は次のとおりです。ユーザーが編集できるように、このテキスト ファイルを解析して Web フォームに戻す必要があります。

どうすれば、誰にでもできる方法でこれを達成できますか? データベースはオプションではありません。これらのテキスト ファイルを使用する必要があります。

私の質問:

  • 上記の例の形式を使用してこれを行う簡単な方法はありますか?
  • 人間が読める形式はどれがより適切に機能しますか (つまり、形式を変更できます)
  • 人間が読めるということは、プログラマー以外の人がそれを読んで、何が何であるかを知ることができることを意味します。

このプロジェクトは PHP を使用します。

アップデート

人間が読めるということは、あなたの祖母を含め、誰でもテキストを読むことができ、それに圧倒されないということです。

4

5 に答える 5

21

人間が読めるが解析可能なドキュメント形式が必要

これがYAMLの設計です。あなたは彼らのサイトまたはウィキペディアでそれについてもっと読むことができます。

ウィキペディアを引用するには:

YAML構文は、ほとんどの高級言語に共通のデータ型(リスト、ハッシュ、スカラー)に簡単にマッピングできるように設計されています。おなじみのインデントされたアウトラインと無駄のない外観により、構成ファイル、デバッグ中のダンプ、ドキュメントヘッダーなど、人間がデータ構造を表示または編集する可能性のあるタスクに特に適しています。

XMLに対する利点は、ユーザーを混乱させる可能性のあるタグを使用しないことです。また、等号、セミコロン、引用符の代わりにコロンを使用するだけなので、INI(これも言及されています)よりもクリーンだと思います。

サンプルYAMLは次のようになります:

invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments: >
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.
于 2010-04-07T21:08:05.717 に答える
11

I'd say either use

or just about any lightweight markup language you deem appropriate.

于 2010-04-07T21:11:01.760 に答える
5

You might want to look into YAML

http://www.yaml.org/

I agree with Pablo Fernandez response. I think JSON might be a good choice as well.

于 2010-04-07T21:10:39.093 に答える
1

XMLはオプションです。

于 2010-04-07T21:08:49.733 に答える
0

INI文字列はかなり読みやすいと言うつもりです。

Pet_Name = "Fred"

しかし、あなたはいつでもあなた自身のフォーマットを転がすことができます。何かのようなもの:

Key: ValueValueValueValueValueValue
Key: ValueValue

基本的には、文字列を改行で分解し、コロンの前にあるテキスト文字列を探してそれをキーとして使用します。コロンの後と改行の前のデータが値です。

于 2010-04-07T21:07:27.017 に答える