我想从txt文件中获取一些信息......已经通过一些问题阅读了,但是我没有解决方案
inventoryItemData {
header {
id: 3758164995
}
itemType: 1
itemID: 2561
count: 1
isOwnerList: false
fromLand: 0
sourceLen: 0
}
这是在我的文本文件中,我想获取项目类型和itemID 作为字符串,所以在这个例子中像
'(2561,1)'
我知道我可以使用foreach并将每个String保存到一个数组中但我不知道如何获得这两个数字
答案 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 )