2010-04-07 2 views
18

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

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

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.

UPDATE

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

+1

Это в значительной степени то, что XML ... читаемый человеком, но может быть легко проанализирован. Тем не менее, необработанный XML не самый красивый. Я бы предложил использовать XML для файла данных, а затем ссылку на файл XSLT, чтобы отформатировать его для читаемого человеком вида. –

+2

@DA По понятным для человека, я имею в виду, что моя мама могла это прочитать и не путаться и не перегружаться. – macinjosh

+0

@macinjosh: Я люблю твою нику. Когда мне было 12 лет, я хотел создать компанию под названием «The Mac & Josh» :-) – Josh

ответ

21

мне нужен читабельный, Но Анализировать-возможности Document Format

Это то, что 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. 
+0

О, и есть, по крайней мере, две библиотеки PHP для чтения/записи YAML – Josh

+0

http://stackoverflow.com/questions/294355/php-yaml-parsers – Josh

+0

Отличный ответ на большой вопрос. Я не знал о YAML. –

0

Я просто хочу сказать, что строка INI довольно читаемым:

Pet_Name = "Fred" 

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

Key: ValueValueValueValueValueValue 
Key: ValueValue 

В принципе, вы взорвется строку новой строкой, искать текстовые строки Infront из колонов и использовать его в качестве ключа, и данные после двоеточия и перед символом новой строки является значением.

+0

То, что я делаю сейчас, но я столкнулся с некоторыми проблемами синтаксического анализа, когда данные включали текст, который перепутал соглашение, как новую строку, за которой следует слово и двоеточие. Не достаточно надежный. – macinjosh

1

XML вариант.

+4

Не было ли удобочитаемо одно из требований? – 2010-09-10 22:10:09

5

Вы можете посмотреть в YAML

http://www.yaml.org/

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

11

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

или просто о каком-либо lightweight markup language вы считаете целесообразными.

+0

Я бы сказал, что упомянутые слабые языки разметки, отличные от ini и yaml, не имеют отношения к исходному сообщению, поскольку они ориентированы на структурированный текст или структурированные данные. –

Смежные вопросы