سؤال

أنا أعمل على أحد تلك المشاريع التي يوجد فيها مليون طريقة أفضل لإنجاز ما أحتاجه ولكن ليس لدي خيار وعلي أن أفعل ذلك بهذه الطريقة. ها هو:

يوجد نموذج ويب ، عندما يقوم المستخدم بملءه ويضرب إرسال ملف نصي قابل للقراءة بشري باستخدام بيانات النموذج. تبدو هكذا:

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 ليتم تعيينه بسهولة لأنواع البيانات الشائعة في معظم اللغات عالية المستوى: قائمة ، تجزئة ، وعدد الكلام. إن الخطوط العريضة المألوفة ومظهرها الهزيل يجعلها مناسبة بشكل خاص للمهام التي من المحتمل أن يشاهدها البشر أو تحرير هياكل البيانات ، مثل ملفات التكوين ، والإلقاء أثناء تصحيح الأخطاء ، ورؤوس المستندات

الميزة على 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.

نصائح أخرى

أود أن أقول إما الاستخدام

أو فقط عن أي لغة ترميز خفيفة الوزن تعتبر مناسبا.

قد ترغب في النظر في Yaml

http://www.yaml.org/

وأنا أتفق مع استجابة بابلو فرنانديز. أعتقد أن JSON قد يكون خيارًا جيدًا أيضًا.

XML هو خيار.

سأقول فقط أن سلسلة ini قابلة للقراءة إلى حد ما:

Pet_Name = "Fred"

ولكن ، يمكنك دائمًا لف التنسيق الخاص بك. شيء مثل:

Key: ValueValueValueValueValueValue
Key: ValueValue

في الأساس ، ستنفجر السلسلة بواسطة الخطوط الجديدة ، والبحث عن سلاسل نصية أمام الكولونز واستخدامها كمفتاح ، والبيانات بعد القولون وقبل الخط الجديد هي القيمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top