尝试以结构化格式从字符串中提取数据

时间:2014-10-28 15:41:02

标签: php parsing

我正在尝试用PHP解析一些数据,但我不完全确定数据格式是什么。它似乎是JSON的变种,但我不确定。

这是一个例子;

    "kFj394"
{
        "allow"
        {
        }
        "name"  "Bob"
        "deny"
        {
        }
        "group" "trusted"
}
"J883Dd"
{
        "name"  "Foo Bar"
        "deny"
        {
        }
        "allow"
        {
        }
        "group" "regular"
}

我正在尝试从他们的ID中获取该人的昵称和群组(在此示例中为kFj394J883Dd

如果有人知道如何实现这一目标,甚至知道这是什么数据格式,我会很感激帮助。感谢。

1 个答案:

答案 0 :(得分:1)

我不知道你的格式是什么。它绝对不是JSON。正则表达可能是你唯一的一个镜头:

$block = ''; // The text you pasted goes here.

foreach (['kFj394', 'J883Dd'] as $id) {
    $nameSearchPattern = '/"' . $id . '"[\n\t\s\w{}"]*?name"\s+"(.+)"/';
    $groupSearchPattern = '/"' . $id . '"[\n\t\s\w{}"]*?group"\s+"(.+)"/';
    preg_match($nameSearchPattern, $block, $nameMatches);
    preg_match($groupSearchPattern, $block, $groupMatches);
    $name = $nameMatches[1];
    $group = $groupMatches[1];
    echo "The name for $id is $name\n";
    echo "The group for $id is $group\n";
}