【发布时间】:2011-03-30 17:11:00
【问题描述】:
我需要能够在 PHP 中解析此类数据:
Acct: 1
email : bleh@gmail.com
status : online
--------------------------------------------------
Acct: 2
email : dfgg@fgfg.com
status : banned
--------------------------------------------------
Acct: 3
signedupname : SomeUsername
somethingelse : offline
--------------------------------------------------
如您所见,数据在很大程度上是随机的。唯一保持不变的是----- 分隔每个条目和Acct: 1 位。每个: 之间的填充通常会发生变化,就像表示每一位数据的变量一样。
我已经尝试使用正则表达式自己完成并解析它,但我显然不够熟练,无法正确完成。最后,我想要根据以下内容的数据:
Acct: <integer>
var1: <string>
var2: <string>
如果这有任何意义的话。它不需要那么高效,因为我需要大约每天执行一次,而且我不介意等待它需要多长时间。
谢谢。 :)
编辑:这是我自己做的:
<?php
$data = file_get_contents('records.txt');
$data = explode('******** Saved Host list with acct/variables ********', $data);
$data = explode('--------------------------------------------------', $data[1]);
foreach($data as &$dataz)
{
$dataz = trim($dataz);
}
$data = str_replace('Acct:', "\nAcct:", $data);
foreach($data as $dataz)
{
preg_match('/Acct: (.*)/', $dataz, $match);
$acct = $match[1];
preg_match('/: (.*)/', $dataz, $match);
$var1 = $match[1];
echo $var1;
}
?>
我已经提取了Acct: 部分,但除此之外的任何内容我都无法理解。
【问题讨论】:
-
如果你能展示你到目前为止所做的事情会很有帮助。如果你能向他们展示你的努力,人们会更愿意提供帮助。
-
啊当然。我将编辑我的 OP。
-
如果破折号的行只包含三个破折号,即
---,那么它就是有效的YAML