PHP Parse txt文件以获取特定数据

时间:2015-04-03 17:31:27

标签: php parsing

我想从txt文件中获取一些信息......已经通过一些问题阅读了,但是我没有解决方案

inventoryItemData {
  header {
    id: 3758164995
  }
  itemType: 1
  itemID: 2561
  count: 1
  isOwnerList: false
  fromLand: 0
  sourceLen: 0
}

这是在我的文本文件中,我想获取项目类型和itemID 作为字符串,所以在这个例子中像

'(2561,1)'

我知道我可以使用foreach并将每个String保存到一个数组中但我不知道如何获得这两个数字

2 个答案:

答案 0 :(得分:0)

    $file = fopen('input.txt', "r");
    $itemID = '';
    $itemType = '';
    while($line = fgets($file))
    {
            if(preg_match('/itemType: (\d+)/', $line, $matches))
            {
                    $itemType = $matches[1];
            }
            else if(preg_match('/itemID: (\d+)/', $line, $matches))
            {
                    $itemID = $matches[1];
            }
    }
    $string = "($itemID,$itemType)";
    print $string . "\n";

修改 以及能够支持文件中多个条目的版本

$file = fopen('input.txt', "r");
$itemID = null;
$itemType = null;
$arrayAssoc = array();
$arrayStrings = array();
while($line = fgets($file))
{
        if(preg_match('/itemType: (\d+)/', $line, $matches))
        {
                $itemType = $matches[1];
        }
        else if(preg_match('/itemID: (\d+)/', $line, $matches))
        {
                $itemID = $matches[1];
        }
        if($itemType != null && $itemID != null)
        {
                $arrayAssoc[$itemID] = $itemType;
                $arrayString[] = "($itemID,$itemType)";
                $itemType = $itemID = null;
        }
}
print_r($arrayAssoc);
print_r($arrayString);

答案 1 :(得分:0)

这应该适合你:

(首先我将所有行都放入一个带file()的数组中。然后我抓住preg_grep()的所有行,它们(包含)$search数组的一个元素。最后我只需使用preg_filter()输出

过滤搜索中的文字
<?php

    $lines = file("test.txt", FILE_IGNORE_NEW_LINES);
    $search = ["itemType:", "itemID:"];
    $arr = preg_filter("/(\b" . implode("|\b", $search) . ")/", "", preg_grep("/(\b" . implode("|\b", $search) . ")/", $lines));

    print_r($arr);

?>

输出:

Array ( [4] => 1 [5] => 2561 )