Config Interpreter
De bedoeling is dat ik met php een interpreter maakt, die configuratie bestanden voor een andere app inlaad en uitleest. De config is opgebouwd met braces: { en }. Een voorbeeld van een config:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"clients.txt"
{
"version" "1"
// This key group lists all your client players
"players"
{
// This must be a unique client name
"The Mad Man [NL]"
{
// Client real name
"name" "The Mad Man [NL]"
// Steam ID for client
"steam" "STEAM_0:1:00000000"
// These are personal access flags for a player
"flags"
{
"Admin" "client"
}
"groups"
{
"Admin" "Eternals"
}
}
// This must be a unique client name
"=MH. Darksendx"
{
// Client real name
"name" "=MH. Darksendx"
// Steam ID for client
"steam" "STEAM_0:0:00000000"
"groups"
{
"Admin" "Eternals"
}
}
// This must be a unique client name
"=MH. "
{
// Client real name
"name" "=MH. "
// Steam ID for client
"steam" "STEAM_0:1:00000000"
"groups"
{
"Admin" "Eternals"
}
}
// This must be a unique client name
"=MH. Storm"
{
// Client real name
"name" "=MH. Storm"
// Steam ID for client
"steam" "STEAM_0:1:00000000"
"groups"
{
"Admin" "Eternals"
}
}
}
// These are global groups of flags that can be assigned to clients
"groups"
{
"Admin"
{
"Eternals" "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d"
"Eternals" "e f g i k l m o p q r s t v w x y z q2 q3 admin spray grav"
"Eternals" "pban client"
}
}
}
{
"version" "1"
// This key group lists all your client players
"players"
{
// This must be a unique client name
"The Mad Man [NL]"
{
// Client real name
"name" "The Mad Man [NL]"
// Steam ID for client
"steam" "STEAM_0:1:00000000"
// These are personal access flags for a player
"flags"
{
"Admin" "client"
}
"groups"
{
"Admin" "Eternals"
}
}
// This must be a unique client name
"=MH. Darksendx"
{
// Client real name
"name" "=MH. Darksendx"
// Steam ID for client
"steam" "STEAM_0:0:00000000"
"groups"
{
"Admin" "Eternals"
}
}
// This must be a unique client name
"=MH. "
{
// Client real name
"name" "=MH. "
// Steam ID for client
"steam" "STEAM_0:1:00000000"
"groups"
{
"Admin" "Eternals"
}
}
// This must be a unique client name
"=MH. Storm"
{
// Client real name
"name" "=MH. Storm"
// Steam ID for client
"steam" "STEAM_0:1:00000000"
"groups"
{
"Admin" "Eternals"
}
}
}
// These are global groups of flags that can be assigned to clients
"groups"
{
"Admin"
{
"Eternals" "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d"
"Eternals" "e f g i k l m o p q r s t v w x y z q2 q3 admin spray grav"
"Eternals" "pban client"
}
}
}
Ik wil het voor elkaar krijgen om dit soort bestanden via het web in te lezen, aan te passen en weer weg te schrijven. Daarbij is het de bedoeling dat de eindgebruiker niet het bovenstaande voor zijn kiezen krijgt, maar een nette, overzichtelijke gebruikers interface waar hij gemakkelijk en snel de config kan aanpassen
Overigens hoef ik niet een heel script voorgekauwd te krijgen waarbij alles hapklaar is (niet dat iemand dat van plan was te maken :)), maar een manier om de config in een bruikbaar variable te zetten, bijvoorbeeld een array. Dat zou er, om maar iets te noemen, zo uit kunnen gaan zien:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
$config_file:
[version]
[players]
[groups]
Onder de key 'players' kan dan bijvoorbeeld het volgende weer staan:
[The Mad Man [NL]
[=MH. Darksendx]
[=MH. ]
[=MH. Storm]
[version]
[players]
[groups]
Onder de key 'players' kan dan bijvoorbeeld het volgende weer staan:
[The Mad Man [NL]
[=MH. Darksendx]
[=MH. ]
[=MH. Storm]
Hopelijk heb ik zo een beetje duidelijk gemaakt wat de bedoeling is.
Dus hoe 'parse' ik zo'n config? Als iemand een artikel weet, of ideeën heeft, dan zou ik die graag horen.
Gewijzigd op 01/01/1970 01:00:00 door Marco
Aan mensen die geïnteresseerd zijn:
Ik heb een config file, zoals deze:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
"downloads.txt"
{
// Add any files you wish to have downloaded to a clients system in here
// The key can be any name you wish.
// The value must be the location on your server of the file
"downloads"
{
"my_file" "materials/decals/custom/mani_admin_plugin/mani_logo.vmt"
"my_file2" "materials/decals/custom/mani_admin_plugin/mani_logo2.vmt"
}
}
{
// Add any files you wish to have downloaded to a clients system in here
// The key can be any name you wish.
// The value must be the location on your server of the file
"downloads"
{
"my_file" "materials/decals/custom/mani_admin_plugin/mani_logo.vmt"
"my_file2" "materials/decals/custom/mani_admin_plugin/mani_logo2.vmt"
}
}
Door een aantal tekens te veranderen en simpelweg het bestand aan te passen, is de config omgevormd naar deze vorm:
Code (php)
Nu heb ik een array, leesbaar voor de php-engine.
Edit: niet bumpen of SanThe komt met zo'n quote gedoe.. Dus wees gewaarschuwd.
En is hier niet die array in array overbodig:
Code (php)
Gewijzigd op 01/01/1970 01:00:00 door Onbekend Onbekend
Overigens is de informatie die je in je config file zet wel typisch iets wat je in je database wil zetten.