我有一个文本文件,存储有关不同项目的信息.

该文件是结构化的.文件中的每个项目都由大括号{}分隔,并以逗号开头.每个项目都有其拥有的属性列表,并且属性可以存在或不存在.如果不存在,服务器将假定它们为“默认”.

每个条目都用大括号括起来,并以逗号结尾:{},

该文件还包含标准的C注释,//以及/ * * /

该项目的每个属性都是从33个属性池中标准化的,其中只有3个是强制性的.可以包括或不包括属性.后端程序假定不包含的属性为默认属性.

有一些属性可以是多行甚至是多属性(如果需要的话,可以构成一个数组).

因此,该文件大致如下所示:

itemdb: (

/*

{

Multi line comment

here to explain the file

},

*/

// Here starts the items

{

Id: 500

DatabaseName: "Item_1"

Name: "Item 1"

Type: 1

Buy: 40

Weight: 10

},

{

Id: 501

DatabaseName: "Item_2"

Name: "Item 2"

Type: 1

Sell: 600

Weight: 200

Script:

},

// Here is some more items

{

Id: 637

DatabaseName: "Item_137"

Name: "Item 137"

Type: 5

Buy: 9000

Weight: 300

Trade: {

nodrop: true

notrade: true

}

Script:

do this stuff;

then this stuff;

">

},

// Note: Edited this in 2015-11-23, see below.

)

我需要一种将所有元素分解为数组以显示给用户的方法.数组看起来像这样(来自上面的示例):

$itemDB = Array

(

[500] => Array

(

[DatabaseName] => Item_1

[Name] => Item 1

[Type] => 1

[Buy] => 40

[Weight] => 10

)

[501] => Array

(

[DatabaseName] => Item_2

[Name] => Item 2

[Type] => 1

[Sell] => 600

[Weight] => 200

[Script] => do stuff

)

[637] => Array

(

[DatabaseName] => Item_137

[Name] => Item 137

[Type] => 5

[Buy] => 9000

[Weight] => 300

[Trade] => array

(

[nodrop] => true

[notrade] => true

)

[Script] => do this stuff;\nthen this stuff

)

);

(因此,基本上将文件分成多维数组,文件的’Id’属性是每个数组的键,文件的每个属性是其自己的键/值)

我确实想出了以下代码来将数组分成每个条目:

$ready = str_replace(array("{","}"),"|", $itemDB);

$itemDB_explode = explode("|", $ready);

但是这段代码只会让我半途而废.我基本上得出这样的数组:

[7]=> string(124) " Id: 501 DatabaseName: "Item_2" Name: "Item 2" Type: 1 Sell: 600 Weight: 200 Script: "

但是对于我的一生,我无法弄清楚如何获得比这更进一步的信息,包括如何使数组的键成为Id以及每个属性都有自己的键/值.

重点是向用户显示条目,允许他们进行编辑,然后将文件保存回去.希望我能在将其保存回本方面获得帮助.

对于那些无疑会问的人:是的,我知道类似这样的内容更适合SQL数据库.问题是该文件以及读取和解释该文件的后端不是我写的,我无法更改它.我只是在编写基于Web的前端以轻松更改该文件.

预先感谢您提供的帮助.

编辑2015-11-23:

我从最初的问题中删除了一些属性.考虑对实际文件进行的编辑,并添加那些缺少的属性:

{

Id: 845

DatabaseName: "Item_345"

Name: "Item 345"

Type: 3

Buy: 30000

Nouse: {

override: 30

sitting: true

}

Stack: [99, 4]

OnEquipScript:

OnUnequipScript:

do some more stuff;

this is some more stuff;

">

},

考虑一下文件中该附加块的结果数组是什么样的:

[845] => Array

(

[DatabaseName] => Item_345

[Name] => Item 345

[Type] => 3

[Buy] => 30000

[Nouse] => array

(

[override] => 30

[sitting] => true

)

[Stack] =>

(

[0] => 99

[1] => 4

)

[OnEquipScript] => do this stuff;

[OnUnequipScript] => do some more stuff;\nthis is some more stuff;

)

php 怎么解析文本,PHP解析自定义纯文本数据库相关推荐

  1. html加载富文本_Uniapp基础实战富文本框解析 WordPress rest api实例

    文本是更具上篇文章uni-app上下拉刷新的续文有需要了解上文的请点击下面连接访问 传送门: Uni-app实战上加载新下拉刷新 WordPress rest api实例 那么我们就开始了,主要的要是 ...

  2. c语言text的作用,一个读text文本文件和解析文本的例子(C语言)

    一个读text文本文件和解析文本的例子. (1)引入头文件 #include #include #include (2)函数int initConfigFile(const char * pFileN ...

  3. 2019华为机试题 解析文本

    解析文本 题目描述 有一种表格数据需要存储在文件中,表格中的每一行,由若干个字段组成,每个字段可以是整数或字符串,设计一种存储格式,采用文本的方式对表格数据进行存储.文本文件中的每一行,代表了表格数据 ...

  4. 【vue设计与实现】解析器 - 解析文本与解码HTML实体

    解析文本 先看一下模板: const template = '<div>Text</div>' 经过前面对标签的处理,当模板内容来到下面这个状态的时候: const templ ...

  5. 微软大佬带你深入解析websocket丨tcp自定义协议的设计丨服务器高并发场景的优化

    各个方面都离不开的websocket,只是你没有注意到 1. websocket的应用场景 2. tcp自定义协议的设计 3. 服务器高并发场景的优化 [Linux服务器开发系列]微软大佬带你深入解析 ...

  6. android 使用 系统字体,Android_解析Android中使用自定义字体的实现方法,1、Android系统默认支持三种字 - phpStudy...

    解析Android中使用自定义字体的实现方法 1.Android系统默认支持三种字体,分别为:"sans", "serif", "monospace ...

  7. Android OpenGL ES 学习(十) – GLSurfaceView 源码解析GL线程以及自定义 EGL

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

  8. 搭建一个解析接口教程(自己的解析接口,可自定义广告)

    搭建一个解析接口(自己的解析接口,可自定义广告) 演示网站:https://vip.yftx2020.top 一.下载解析源码 解析源码下载 提取码:3tkq 二.修改user.php文件(压缩包里有 ...

  9. PL/SQL 美化器不能解析文本

    1.问题:PL/SQL美化器不能解析文本 原始sql语句如下: CREATE OR REPLACE VIEW V_GGXZBM AS SELECT XZBM,XZMC,CASE WHEN PARENT ...

最新文章

  1. 30个在线学习设计与开发的站点
  2. Xamarin如何生成Android项目的APK
  3. Python 技巧篇-用print打印输出但不换行方法
  4. vue 动态组件名_vue动态加载组件mounted无法获取dom的解决思路
  5. 一道关于Promise应用的面试题
  6. 如何改善虚幻引擎中的游戏线程CPU性能表现
  7. SpringBoot 使用unoconv 在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件
  8. ccs软件linux安装,【图片】【吧主帖】在LINUX(ubuntu)系统下装CCSv6方法(原创)【dsp吧】_百度贴吧...
  9. 物联网行业的现状与思考
  10. Semi-prime H-numbers(POJ 3292)
  11. 维斯易联网络打印机配置教程
  12. Laravel企业信息化管理平台
  13. MySQL 自增序号
  14. 如何将低版本的CAD转换器转换成高版本
  15. 20 October in ss
  16. opengl光照效果的三棱锥+键盘上下左右控制旋转(学习笔记-仅供参考)
  17. TS装饰器、混入Mixins、TS模块、命名空间
  18. 树莓派系列(2)-安装系统并连接
  19. 【L2-034 口罩发放】天梯赛L2详解
  20. PB中使用FORMULA ONE

热门文章

  1. 假如把地球46亿年历史压缩到一天,竟然有这么多惊奇的发现!
  2. 全国首个人工智能专业,怎么学?
  3. 干货|MIT线性代数课程精细笔记5
  4. 语音增强相关技术综述
  5. html加上百度统计,vue单页面应用加入百度统计
  6. 如何打开java_怎样运行java
  7. webshell提权教程linux,Linux下WEBSHELL提权
  8. html中article、section、aside的区别与联系
  9. Linux平台下C++编程
  10. 数据中台技术及业务发展史与未来趋势展望