<?php
$file = fopen ("test.txt","r");
$string = 'server-port: ';
$result = explode(': ', $file)[1];
echo $result;
fclose( $file );
?>
您好,我在下面收到此错误,您能帮助我吗?谢谢!
explode() expects parameter 2 to be string
答案 0 :(得分:0)
这是因为fopen()
返回resource
而explode()
需要string
作为第二个参数。
要阅读文件内容,您应该使用stream_get_contents()
作为第一个参数:
<?php
$stream = fopen ("test.txt","r");
$fileContent = stream_get_contents($stream);
$string = 'server-port: ';
$result = explode(': ', $fileContent)[1];
echo $result;
fclose( $stream );
?>
修改1:
正如@MikeVelazco所说,file_get_contents()
将消除使用fopen()
和fclose()
函数的必要性,因为它直接使用文件路径。
<?php
$fileContent = file_get_contents("text.txt");
$string = 'server-port: ';
$result = explode(': ', $fileContent)[1];
echo $result;
?>
编辑2:
由于OP在评论中说需要从文件中获取服务器端口,我建议这个解决方案:
使用以下正则表达式:/server-port=(\d+)/gm
(您可以检查它是否有效here)。
要使用正则表达式,您可以使用preg_match()
函数:
<?php
$fileContent = file_get_contents("text.txt");
$matches = [];
if (preg_match('/server-port=(\d+)/m', $fileContent, $matches)) {
echo $matches[1];
} else {
echo "Server port not found in configuration file";
}
?>
您可以看到它有效here
答案 1 :(得分:0)
您不需要使用fopen来获取内容,只需使用file_get_contents
。
<?php
$file = file_get_contents('test.txt');
$result = explode(':',$file)[1];
echo $result;
答案 2 :(得分:-1)
更新:您需要在爆炸的第一个参数中使用PHP_EOL
来获取每行的内容。
您需要使用stream_get_contents($file);
更新2
以下是整码
$file = fopen ("test.txt","r");
$string = 'server-port: ';
$content = stream_get_contents($file);;
$result = explode(PHP_EOL, $content);
$filtered_result = array();
foreach($result as $value){
$temp = explode('=', $value);
if(count($temp) == 2){
$filtered_result[$temp[0]] = $temp[1];
}
}
fclose( $file );
从VAR_DUMP输出
array(32) {
["generator-settings"]=>
string(0) ""
["op-permission-level"]=>
string(1) "4"
["allow-nether"]=>
string(4) "true"
["level-name"]=>
string(5) "world"
["enable-query"]=>
string(5) "false"
["allow-flight"]=>
string(5) "false"
["announce-player-achievements"]=>
string(5) "false"
["server-port"]=>
string(5) "25565"
["level-type"]=>
string(7) "DEFAULT"
["enable-rcon"]=>
string(5) "false"
["force-gamemode"]=>
string(5) "false"
["level-seed"]=>
string(0) ""
["server-ip"]=>
string(0) ""
["max-build-height"]=>
string(3) "256"
["spawn-npcs"]=>
string(4) "true"
["white-list"]=>
string(5) "false"
["spawn-animals"]=>
string(4) "true"
["snooper-enabled"]=>
string(4) "true"
["hardcore"]=>
string(5) "false"
["online-mode"]=>
string(4) "true"
["resource-pack"]=>
string(0) ""
["pvp"]=>
string(4) "true"
["difficulty"]=>
string(1) "1"
["enable-command-block"]=>
string(5) "false"
["player-idle-timeout"]=>
string(1) "0"
["gamemode"]=>
string(1) "0"
["max-players"]=>
string(2) "20"
["spawn-monsters"]=>
string(4) "true"
["view-distance"]=>
string(1) "3"
["generate-structures"]=>
string(4) "true"
["spawn-protection"]=>
string(2) "16"
["motd"]=>
string(18) "A Minecraft Server"
}
如果您想获得server-port
的值,只需使用它的密钥调用它。
echo $filtered_result['server-port'];