我有一个看起来像这样的ini文件:
[236a4e392b6dd0a8409bb91c664ab6468be32555]
76561197961658420=DaRoL
76561197962180350=Spow
76561197962376928=Kolma
[efd3dd758092ad90e35fb634a203c41b90da6333]
76561197964385070=Kelininkas
76561199641652847=Kelininkas
如何在PHP中通过使用键名(或可选键值)进行搜索来返回节名称。
e.g。 76561197964385070 - > efd3dd758092ad90e35fb634a203c41b90da6333和可选
Kelininkas - > efd3dd758092ad90e35fb634a203c41b90da6333
我将ini文件导入数组,然后我就能找到密钥和项目。
但不是上级键的关键名称。
<?php
header('Content-type: text/plain');
$ini_array = (parse_ini_file("BannedHWs.ini",true));
$steamid="76561197962180330";
function find($item, $key)
{
global $steamid;
if ($key == $steamid)
echo "$key FOUND $item\n";
}
array_walk_recursive($ini_array, 'find');
echo "\n";
print_r ($ini_array); // SHOW ARRAY
?>
结果:
76561197962180330 FOUND Spow
Array
(
[236a4e392b6dd0a8409bb91c664ab6468be32d15] => Array
(
[76561197961658460] => DaRoL
[76561197962180330] => Spow
[76561197962376938] => Kolma
)
[efd3dd758092ad90e35fb634a203c41b90da6895] => Array
(
[76561197964385060] => Kelininkas
[76561199641652827] => Kelininkas
)
)
提前致谢
答案 0 :(得分:0)
如果您使用的是Linux机器,这可能会对您有所帮助。这不是一个解决方案,而是一条可以走得更远的道路。
$ cat some_config_ini.txt
[efd3dd758092ad90e35fb634a203c41b90da6333]
76561197964385070=Kelininkas
76561199641652847=Kelininkas
$ cat some_config_ini.txt | grep Kelininkas -B 1 | head -1
[efd3dd758092ad90e35fb634a203c41b90da6333]
以上命令不适用于原始文件。
$ cat som_config_ini.txt | grep Spow -B 1 | head -1
76561197961658420=DaRoL
但是,如果你知道块下的键和值,你可以尝试这个。
$ cat som_config_ini.txt | grep Spow -B 2 | head -1
[236a4e392b6dd0a8409bb91c664ab6468be32555]
$ cat som_config_ini.txt | grep Kolma -B 3 | head -1
[236a4e392b6dd0a8409bb91c664ab6468be32555]
请注意传递给grep [-B 1/2/3]的参数。
如果您愿意,我可以提供ruby&amp; python解决方案。
答案 1 :(得分:0)
找到我自己的解决方案:
<?php
header('Content-type: text/plain');
$ini_array = (parse_ini_file("BannedHWs.ini",true));
$steamid="76561199641652827";
function findID(array $array, $path = null) {
global $steamid;
foreach ($array as $k => $v) {
if (!is_array($v)) {
if ($k == $steamid){
echo "HWID: $path\n";
}
}
else {
findID($v, $path.$k);
}
}
}
findID($ini_array);
//echo "\n";
//print_r ($ini_array); // SHOW ARRAY
?>
基于: