人
我有一个问题,我想从文件中读取并使用和获取文件的某些部分,如下所示。这是文件内部的内容,但我想获取名称。我的服务器使用此文件,如果播放器登录服务器,则名称列表会变大。但我不知道如何做到这一点......我真的想知道如何做到这一点。
我已经通过爆炸第一个角色来尝试自己,但这就是我的知识达到了多远。
非常感谢能帮助我的人。
Players online: NAME1, NAME2, NAME3, NAME4, NAME5, NAME6, ETC, ETC. Total: 4
答案 0 :(得分:0)
$s = 'Players online: Admin Wouter, Krachtpatser, Dark Warrior, Anneleen. Total: 4';
// or read from the players file:
//$s = file_get_contents('path_to_players_file');
$s = str_replace('Players online: ', '', $s);
$stringPlayers = substr($s, 0, strrpos($s, '. Total:'));
echo $stringPlayers; // displays: Admin Wouter, Krachtpatser, Dark Warrior, Anneleen
// now get the player names in an array:
$arrayPlayers = explode(',', $stringPlayers);
foreach ($arrayPlayers as $k => $name) {
$arrayPlayers[$k] = trim($name);
}
echo '<pre>';
print_r($arrayPlayers);
echo '</pre>';
/* Displays:
Array
(
[0] => Admin Wouter
[1] => Krachtpatser
[2] => Dark Warrior
[3] => Anneleen
)
*/
答案 1 :(得分:0)
您可以使用strpos()
搜索:
字符的第一次出现和Total:
的位置,然后使用substr()
从字符串中删除这些不需要的部分。然后,您可以在每个,
字符上拆分字符串以获取名称数组。请注意,名称将包含空格,因此我们可以将array_walk()
与trim()
结合使用以删除这些:
// get the contents of your file
$data = file_get_contents('file.txt');
// get position of first ':' character
$pos1 = strpos($data, ':');
// get position of 'Total:'
$pos2 = strrpos($data, 'Total:');
// remove these parts using `substr()`
$data = substr($data, $pos1+1, ($pos2 - 1) - $pos1);
// split the string on each ',' character
$array = explode(",", $data);
// remove any whitespaces from the start and end
array_walk($array, function(&$value, $key) {
$value = trim($value);
});
// array now contains
Array
(
[0] => Admin Wouter
[1] => Krachtpatser
[2] => Dark Warrior
[3] => Anneleen.
)
确保您没有任何落后行为。&#39;在名称之后,您可以像这样修改array_walk()
回调:
array_walk($array, function(&$value, $key) {
// trim whitespaces
$value = trim($value);
// trim trailing '.' characters
$value = rtrim($value, '.');
});
答案 2 :(得分:0)
你可以尝试一下:
$line = 'layers online: NAME1, NAME2, NAME3, NAME4, NAME5, NAME6, ETC, ETC. Total: 4';
$pattern = '/:(.*)[,.]/';
preg_match($pattern, $line, $matches);
$names = explode(',', $matches[1]);
print_r($names);