我需要读取一个。txt文件并创建一个数组来获取值。
我主要想用php来做,但我接受其他建议
[Slot000]可以与服务器内的人数一样多(001,002,003...010,011...)
txt文件每5秒更新一次。
谢谢你帮我!
代码示例:
[Server]
ServerPLR=DedicatedServer
LobbyName=xFactorracing.com V8 OR
ModName=V8Factor Unleashed 2012 v1.1
Aids=0,0,1,1,0,0,0,0,1,1,3
[Session]
Scene=Queensland International Raceway
TrackAIW=Queensland.AIW
TrackLength=3134.0745
StartTime=2013-08-09 05:26:27
LengthLaps=-1
LengthTime=90
DarkCloud=0.00
Raining=0.00
AmbientTemp=24.8
TrackTemp=24.3
OnPathWetness=0.00
OffPathWetness=0.00
SessionTime=1.005314
Session=Practice1
GamePhase=Preparing
YellowFlag=None
SectorYellowFlags=(0,0,0)
FCY_log=()
[Slot000]
Driver=daniel
Vehicle=Unknown
VehicleClass=Unknown
IsAI=1
Position=1
Laps=0
InSector=1
BestLap=-1.000
LastLap=-1.000
BestSectors=(-1.000, -1.000, -1.000)
LastLapSectors=(-1.000, -1.000, -1.000)
Sectors=(-1.000, -1.000, -1.000)
Pitstops=0
InPits=1
TimeGapToLider=0.000
LapGapToLider=0
TimeGapToPrev=0.000
LapGapToPrev=0
LapDistanceTravelled=-1.069
FinishStatus=None
[END]
您的文本文件遵循php.ini
格式/结构,因此您可以方便地使用parse_ini_
函数(请参阅手册),而不是编写自定义解析器。 行fcy_log=()
抛出一个错误,()
(空括号)不是可以接受的语法,因此我们在解析字符串之前做了一点预处理。 还是够简单的:
$raw = file_get_contents('file.txt');
$raw = str_replace('=()', '=', $raw); // fixing the offending value
$data = parse_ini_string($raw, true, INI_SCANNER_TYPED);
var_dump($data);
如果没有语法异常,您可以简单地使用parse_ini_file('file.txt')
。 在任何情况下,这都会产生一个关联数组,如下所示:
array(4) {
["Server"] · array(4) {
["ServerPLR"] · string(15) "DedicatedServer"
["LobbyName"] · string(23) "xFactorracing.com V8 OR"
["ModName"] · string(28) "V8Factor Unleashed 2012 v1.1"
["Aids"] · string(21) "0,0,1,1,0,0,0,0,1,1,3"
}
["Session"] · array(18) {
["Scene"] · string(32) "Queensland International Raceway"
["TrackAIW"] · string(14) "Queensland.AIW"
["TrackLength"] · float(3134.0745)
["StartTime"] · string(19) "2013-08-09 05:26:27"
["LengthLaps"] · int(-1)
["LengthTime"] · int(90)
...
因为可以有几个插槽,可能有相同名称的键,所以我们使用process_sections
选项,parse_ini_string($raw,**true**)
,它生成一个按节标题分组的多维数组。 我们还使用INI_SCANNER_TYPED
标志; 如果没有它,所有值都将是“字符串”类型。 (这在您用例中可能很重要,也可能不重要。)