php 怎么解析文本,PHP解析自定义纯文本数据库
我有一個文本文件,存儲有關不同項目的信息.
該文件是結構化的.文件中的每個項目都由大括號{}分隔,并以逗號開頭.每個項目都有其擁有的屬性列表,并且屬性可以存在或不存在.如果不存在,服務器將假定它們為“默認”.
每個條目都用大括號括起來,并以逗號結尾:{},
該文件還包含標準的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解析自定义纯文本数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 装linux服务器进去配置界面,在Cen
- 下一篇: 动态规划算法php,php算法学习之动态