I Need a Human Readable, pourtant Parse-able Document Format
-
25-09-2019 - |
Question
Je travaille sur un de ces projets où il y a un million de meilleures façons d'accomplir ce que je dois mais je n'ai pas d'autre choix et je dois le faire de cette façon. Ici, il est:
Il y a un formulaire Web, lorsque l'utilisateur le remplit et frappe un soumettre un fichier texte lisible par l'homme est créé à l'aide des données de formulaire. Il ressemble à ceci:
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
Mon problème est le suivant:. Je dois analyser ce fichier texte nouveau dans le formulaire Web afin que l'utilisateur peut modifier
Comment pourrais-je, d'une manière à toute épreuve, y parvenir? Une base de données n'est pas une option, je dois utiliser ces fichiers texte.
Mes questions:
- Yat-il un moyen infaillible pour faire en utilisant le format dans l'exemple ci-dessus?
- Quel est le format lisible par l'homme fonctionnerait mieux (en d'autres termes, je peux changer le format)
- Texte lisible signifie qu'un non programmeur pouvait le lire et savoir ce qui est quoi.
Ce projet utilise PHP.
UPDATE
Par je veux dire lisible par l'homme que l'on puisse lire le texte et ne pas être submergé par elle, y compris votre grand-mère.
La solution
I Need a Human Readable, pourtant Parse-able Format de document
est ce que YAML a été conçu pour être. Vous pouvez en lire davantage sur leur site ou sur Wikipedia .
Pour citer Wikipedia:
syntaxe YAML a été conçu pour être facilement correspondant à des types de données communes à la plupart langages de haut niveau: liste, hachage, et scalaire. Son familier dentelée contour et l'apparence maigre rend Convient particulièrement pour les tâches où les humains sont susceptibles d'afficher ou de modifier des données structures, telles que la configuration fichiers, dumping pendant le débogage, et têtes de document
L'avantage sur XML est qu'il n'utilise pas les balises qui pourraient dérouter les utilisateurs. Et je pense qu'il est plus propre que INI (qui a également été mentionné) car il utilise simplement égaux au lieu de côlons signes, et des citations des points-virgules.
YAML Sample ressemble à:
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.
Autres conseils
Je dirais que ce soit avec
- fichiers INI ou
- YAML ou
- Markdown ou
- textile
ou à peu près tout sembleront appropriées.
Vous pouvez regarder dans YAML
Je suis d'accord avec la réponse Pablo Fernandez. Je pense que JSON pourrait être un bon choix aussi bien.
XML est une option.
Je vais juste dire qu'une chaîne INI est assez lisible:
Pet_Name = "Fred"
Mais, vous pouvez toujours rouler votre propre format. Quelque chose comme:
Key: ValueValueValueValueValueValue
Key: ValueValue
En fait, vous éclatez la chaîne par sauts de ligne, rechercher des chaînes de texte de Infront et l'utiliser côlons comme la clé, et les données après les deux points et avant le saut de ligne est la valeur.