我正在为Minecraft服务器创建一个控制面板(如果你不知道的话,这是一个游戏)。我需要在php中处理server.properties文件以获取在线模式字段并获得它的价值。我该怎么做呢?有什么想法吗?
这是server.properties的一个例子:
spawn-protection=16
query.port=25565
generator-settings=
force-gamemode=false
allow-nether=true
gamemode=0
enable-query=true
player-idle-timeout=0
difficulty=1
spawn-monsters=true
op-permission-level=4
announce-player-achievements=true
pvp=true
snooper-enabled=true
level-type=DEFAULT
hardcore=false
venable-command-block=false
max-players=5
rcon.port=25575
server-port=25565
debug=false
texture-pack=
server-ip=
spawn-npcs=true
allow-flight=false
level-name=
view-distance=10
resource-pack=
spawn-animals=true
white-list=false
rcon.password=asd
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
enable-rcon=true
motd=A Minecraft Server
是的,田地一直在玩耍,所以我无法真正预测这条线的位置。
答案 0 :(得分:1)
如果你正在使用file_get_contents,那么你可以使用explode来破坏新行的数据。
$homepage = file_get_contents('http://www.example.com/data.txt');
$arr=explode("\n",$homepage)
Alternatively, you can use preg_split and the character group \s which matches every white space character:
preg_split('/\s+/', $homepage);
现在搜索特定关键字:
$prop='properties';
$key = array_search($prop, $arr);
通过这个你可以找到特定的位置。 现在使用explode来获得理想的结果。
$res=explode("=",$key);
答案 1 :(得分:1)
使用explode()
$content = file_get_contents('server.properties');
$lines= explode("\r\n" , $content);
echo '<form name="form1" method="post" action="">';
array_pop($lines);
foreach($lines as $line)
{
$properties = explode('=' , $line);
echo $properties[0] . ' = <input type="text" value="'. $properties[1] .'" name="properties[]['. $properties[0] .']"/></br>';
}
echo '<input type="submit" name="submit" value="Submit"></br>';
echo '</form>';
上面的部分回应了文件的内容。 下面的部分汇集了它。你可以将它放在前面提到的部分之上。
if(isset($_POST['properties']))
{
$new_lines = $_POST['properties'];
$string = '';
foreach($new_lines as $line)
{
foreach($line as $property => $value)
{
$string .= $property . '=' . $value . "\r\n";
}
}
file_put_contents('server.properties' , $string);
unset($_POST['properties']);
}
答案 2 :(得分:1)
如果您能够使用file_get_content()
或其他方式获取PHP变量中的文件内容,并且可以说保存字符串的变量是$input_lines
您可以使用以下正则表达式获取值
preg_match_all("/online\-mode=(.*)$/m", $input_lines, $output_array);
$ output_array将为
Array
(
[0] => Array
(
[0] => online-mode=true
)
[1] => Array
(
[0] => true
)
)
这就是它的工作原理
/online\-mode=(.*)$/m
online matches the characters online literally (case sensitive)
\- matches the character - literally
mode= matches the characters mode= literally (case sensitive)
1st Capturing group (.*)
.* matches any character (except newline)
Quantifier: Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
$ assert position at end of a line
m modifier: multi-line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)
答案 3 :(得分:1)
解析ini函数很有用
示例:
$settings = parse_ini_file('server.properties');
echo $settings['level-type']; //will print DEFAULT