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

问题描述 投票:0回答:6

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

有一个网络表单,当用户填写并点击提交时,将使用表单数据创建人类可读的文本文件。看起来像这样:

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。

更新

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

php parsing text-files human-readable
6个回答
21
投票

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

这就是 YAML 的设计目的。您可以在他们的网站或Wikipedia上阅读更多相关信息。

引用维基百科:

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.

11
投票

我想说要么使用

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


5
投票

您可能想研究一下 YAML

http://www.yaml.org/

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


1
投票

XML 是一个选项。


0
投票

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

Pet_Name = "Fred"

但是,您始终可以推出自己的格式。比如:

Key: ValueValueValueValueValueValue
Key: ValueValue

基本上,您可以按换行符分解字符串,查找冒号前面的文本字符串并将其用作键,冒号后面和换行符之前的数据就是值。


0
投票

仅根据OP的示例提出一些想到的候选人:

我可以发誓 plist 具有类似于 json(而不是 XML)的东西,但更易于阅读。不过我在网上找不到任何例子。

不过我无法谈论它们与 PHP 的兼容性。

© www.soinside.com 2019 - 2024. All rights reserved.