Я работаю над одним из тех проектов, где существует миллион лучших способов выполнить то, в чем я нуждаюсь, но у меня нет выбора, и я должен сделать это этот путь.Вот:
Существует веб-форма, когда пользователь заполняет ее и поражает утверждание, что файл читаемого пользователем текста создается с помощью данных формы. Это похоже на это:
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 быть. Вы можете прочитать об этом на их сайте или в Википедии .
Цитата из Википедии:
Синтаксис YAML был разработан таким образом, чтобы его можно было легко сопоставить с типами данных, общими для большинства языков высокого уровня: списком, хешем и скаляром. . Его знакомая структура с отступом и компактный внешний вид делают его особенно подходящим для задач, в которых люди могут просматривать или редактировать структуры данных , такие как конфигурация {{1 }} файлы, дамп во время отладки и заголовки документов
Преимущество перед 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.
Я просто скажу, что строка INI довольно читабельна:
Pet_Name = "Fred"
Но вы всегда можете использовать свой собственный формат. Что-то вроде:
Key: ValueValueValueValueValueValue
Key: ValueValue
В принципе, вы бы взорвали строку по символам новой строки, ищите текстовые строки перед двоеточиями и использовали бы их в качестве ключа, а данные после двоеточия и перед новой строкой являются значением.
Я бы сказал, либо использовать
] или почти любой упрощенный язык разметки , который вы сочтете подходящим.
Вы можете изучить YAML
Я согласен с ответом Пабло Фернандеса. Я думаю, что JSON тоже может быть хорошим выбором.