我需要一个人类可读,但可解析的文档格式

时间:2010-04-07 21:04:11

标签: php parsing text-files human-readable

我正在开展其中一个项目,其中有一百万个更好的方法来完成我需要的东西,但我别无选择,我必须这样做。这是:

有一个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

我的问题是:我需要将此文本文件解析回网络表单,以便用户可以对其进行编辑。

我怎么能以万无一失的方式实现这一目标?数据库不是一个选项,我必须使用这些文本文件。

我的问题:

  • 使用上面示例中的格式是否有一种万无一失的方法?
  • 哪种人类可读的格式可以更好地工作(换句话说,我可以更改格式)
  • 人类可读意味着非程序员可以阅读它并知道它是什么。

这个项目使用PHP。

更新

通过人类可读,我的意思是任何人都可以阅读文本而不会被它淹没,包括你的祖母。

5 个答案:

答案 0 :(得分:21)

  

我需要一个人类可读的   可解析的文档格式

这就是YAML的设计目标。您可以在其网站或Wikipedia上详细了解相关信息。

引用维基百科:

  

YAML语法很容易设计   映射到大多数共同的数据类型   高级语言:list,hash和   标量。它熟悉的缩进   轮廓和精益外观使它成为现实   特别适合任务   人类可能会查看或编辑数据   结构,如配置   文件,调试期间转储和   文件标题

优于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.

答案 1 :(得分:11)

我要么说要么

或您认为合适的任何lightweight markup language

答案 2 :(得分:5)

您可能想要查看YAML

http://www.yaml.org/

我同意巴勃罗·费尔南德斯的回应。我认为JSON可能也是一个不错的选择。

答案 3 :(得分:1)

XML是一个选项。

答案 4 :(得分:0)

我只想说INI字符串非常易读:

Pet_Name = "Fred"

但是,您可以随时滚动自己的格式。类似的东西:

Key: ValueValueValueValueValueValue
Key: ValueValue

基本上,你会用换行符爆炸字符串,查找冒号前面的文本字符串并将其用作键,冒号后和换行符之前的数据是值。