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

2022-08-30 21:56:17

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

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

更新

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


答案 1

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

这就是 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.

答案 2

我会说要么使用

或者任何你认为合适的轻量级标记语言


推荐