Мне нужен читаемый, но разбираемый в формате документа документ - PullRequest
18 голосов
/ 08 апреля 2010

Я работаю над одним из тех проектов, где есть миллион лучших способов выполнить то, что мне нужно, но у меня нет выбора, и я должен сделать это таким образом.Вот оно:

Существует веб-форма, когда пользователь заполняет ее и нажимает на кнопку «Отправить». Создан читаемый человеком текстовый файл, созданный с использованием данных формы.Это выглядит так:

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 ]

21 голосов
/ 08 апреля 2010

Мне нужен человек, читаемый, но Разборный формат документа

Это то, для чего был разработан 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.
11 голосов
/ 08 апреля 2010

Я бы сказал, использовать либо

или почти любой облегченный язык разметки , который вы считаете подходящим.

5 голосов
/ 08 апреля 2010

Возможно, вы захотите взглянуть на YAML

http://www.yaml.org/

Я согласен с ответом Пабло Фернандеса. Я думаю, что JSON также может быть хорошим выбором.

1 голос
/ 08 апреля 2010

XML является опцией.

0 голосов
/ 08 апреля 2010

Я просто скажу, что строка INI довольно читабельна:

Pet_Name = "Fred"

Но вы всегда можете свернуть свой собственный формат. Что-то вроде:

Key: ValueValueValueValueValueValue
Key: ValueValue

По сути, вы должны разбивать строку на новые строки, искать текстовые строки перед двоеточиями и использовать их в качестве ключа, а данные после двоеточия и до новой строки - это значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...