使用php替换某行或某个单词

使用php替换某行或某个单词,php,numbers,filenames,word,Php,Numbers,Filenames,Word,有人知道如何使用下面的php示例文件名替换文件特定行中的特定行、单词或数字吗 server.cfg game dm plugins etc etc etc ports 2345 那么php可以只更新端口号吗?使用任何形式或东西?将是有益的以下是一个逐步解决方案,每行都有解释 注意:server.cfg必须可由PHP编写。确保设置权限,以便PHP可以首先写入该文件。否则,将出现“无法打开流:权限被拒绝”错误 很好,但是我如何使用多行示例来实现它呢 $newport = $_POST['ports

有人知道如何使用下面的php示例文件名替换文件特定行中的特定行、单词或数字吗

server.cfg

game dm
plugins etc etc etc
ports 2345

那么php可以只更新端口号吗?使用任何形式或东西?将是有益的

以下是一个逐步解决方案,每行都有解释

注意:server.cfg必须可由PHP编写。确保设置权限,以便PHP可以首先写入该文件。否则,将出现“无法打开流:权限被拒绝”错误


很好,但是我如何使用多行示例来实现它呢

$newport = $_POST['ports'];
$newgamemode = $_POST['gamemode'];
$newmaxplayers = $_POST['maxplayers'];
$contents = file_get_contents($myFile);
$contents = preg_replace('/(ports) (\\d+)/', '$1 '.$newport, $contents);
$contents = preg_replace('/(gamemode) (\\d+)/', '$1 '.$newgamemode, $contents);
$contents = preg_replace('/(maxplayers) (\\d+)/', '$1 '.$newmaxplayers, $contents);
file_put_contents($myFile, $contents);```

the current cfg file looks like this 
gamemode asdsad
plugins discord04rel64 announce04rel64 
ports 100
sqgamemode scripts/main.nut
maxplayers 100

或你已经有代码了吗?我们能看看吗?你那里的东西看起来应该有用。它不起作用吗?不过需要注意的是,如果某个软件服务实际使用了该配置文件,那么您的建议是非常危险的,因为您网站上的用户将能够轻松地利用此漏洞,将自己的配置注入该文件,并可能接管您的web服务器。不,不要担心安全性,只是代码不起作用只有部分maxplayer正在更改,而不是其他变量,因为正则表达式中的\d+只匹配数字。我看到您正在尝试在gamemode中匹配字母。如果要匹配小写字母,请使用[a-z]+
$newport = $_POST['ports'];
$newgamemode = $_POST['gamemode'];
$newmaxplayers = $_POST['maxplayers'];
$contents = file_get_contents($myFile);
$contents = preg_replace('/(ports) (\\d+)/', '$1 '.$newport, $contents);
$contents = preg_replace('/(gamemode) (\\d+)/', '$1 '.$newgamemode, $contents);
$contents = preg_replace('/(maxplayers) (\\d+)/', '$1 '.$newmaxplayers, $contents);
file_put_contents($myFile, $contents);```

the current cfg file looks like this 
gamemode asdsad
plugins discord04rel64 announce04rel64 
ports 100
sqgamemode scripts/main.nut
maxplayers 100