我正在从事其中一个项目,其中有一百万种更好的方法来完成我所需要的,但我别无选择,我必须这样做。这是:
有一个网络表单,当用户填写并点击提交时,将使用表单数据创建人类可读的文本文件。看起来像这样:
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。
更新
我所说的人类可读的意思是任何人都可以阅读文本并且不会被它淹没,包括你的祖母。
我需要一个人类可读的,但是 可解析的文档格式
这就是 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.
XML 是一个选项。
我只是想说 INI 字符串非常可读:
Pet_Name = "Fred"
但是,您始终可以推出自己的格式。比如:
Key: ValueValueValueValueValueValue
Key: ValueValue
基本上,您可以按换行符分解字符串,查找冒号前面的文本字符串并将其用作键,冒号后面和换行符之前的数据就是值。
仅根据OP的示例提出一些想到的候选人:
recutils
(附带大量 CLI 程序)toml
https://toml.io/en/我可以发誓 plist 具有类似于 json(而不是 XML)的东西,但更易于阅读。不过我在网上找不到任何例子。
不过我无法谈论它们与 PHP 的兼容性。