如何更改文本文件(PHP)中的行

如何更改文本文件(PHP)中的行,php,fopen,fwrite,Php,Fopen,Fwrite,文本文件(Text.txt): 如何替换某些行的值,例如: server-port=25565 替换为: server-port=25585 但找不到“服务器端口=25565”并替换为“服务器端口=25585” 发现服务器端口所在的行和要分配的值需要替换 例如: <?php $myfile = fopen("text.txt", "r") or die("Unable to open file!"); ... fclose($myfile); ?>

文本文件(Text.txt):

如何替换某些行的值,例如:

server-port=25565
替换为:

server-port=25585
但找不到“服务器端口=25565”并替换为“服务器端口=25585” 发现服务器端口所在的行和要分配的值需要替换

例如:

<?php
    $myfile = fopen("text.txt", "r") or die("Unable to open file!");
    ...
    fclose($myfile);
?>

编辑:
找到并保存后,替换文本文件。

既然您的格式看起来像PHP配置文件
(.ini)
,为什么不使用函数呢

$ini = parse_ini_file("text.txt");
echo "<pre>".print_r($ini,TRUE)."</pre>";
更改它:

$f = fopen("text.txt","w");
foreach($ini as $k=>$v) {
   fwrite($f,$k."=".$v.PHP_EOL);
}
fclose($f);
使用以下命令再次保存.txt文件:

$lines = file("text.txt",FILE_IGNORE_NEW_LINES);
// modify
foreach($lines as &$line) {
   $val = explode("=",$line);
   if ($val[0]=="server-port") {
      $val[1] = "25585";
      $line = implode("=",$val);
   }
}
unset($line);

// save again
$f = fopen("text.txt","w");
foreach($lines as $line) {
   fwrite($f,$line.PHP_EOL);
}
fclose($f);
您可能需要使用
更改您的
#
注释符号

更新

<?php

$file = "file.txt";

$content = file($file);

foreach ($content as $line_num => $line) {
    if (false === (strpos($line, 'server-port=25565'))) continue;

    $content[$line_num] = "server-port=25585\n";
}

file_put_contents($file, $content);

既然您的格式看起来很像PHP配置文件
(.ini)
,为什么不使用函数呢

$ini = parse_ini_file("text.txt");
echo "<pre>".print_r($ini,TRUE)."</pre>";
更改它:

$f = fopen("text.txt","w");
foreach($ini as $k=>$v) {
   fwrite($f,$k."=".$v.PHP_EOL);
}
fclose($f);
使用以下命令再次保存.txt文件:

$lines = file("text.txt",FILE_IGNORE_NEW_LINES);
// modify
foreach($lines as &$line) {
   $val = explode("=",$line);
   if ($val[0]=="server-port") {
      $val[1] = "25585";
      $line = implode("=",$val);
   }
}
unset($line);

// save again
$f = fopen("text.txt","w");
foreach($lines as $line) {
   fwrite($f,$line.PHP_EOL);
}
fclose($f);
您可能需要使用
更改您的
#
注释符号

更新

<?php

$file = "file.txt";

$content = file($file);

foreach ($content as $line_num => $line) {
    if (false === (strpos($line, 'server-port=25565'))) continue;

    $content[$line_num] = "server-port=25585\n";
}

file_put_contents($file, $content);

既然您的格式看起来很像PHP配置文件
(.ini)
,为什么不使用函数呢

$ini = parse_ini_file("text.txt");
echo "<pre>".print_r($ini,TRUE)."</pre>";
更改它:

$f = fopen("text.txt","w");
foreach($ini as $k=>$v) {
   fwrite($f,$k."=".$v.PHP_EOL);
}
fclose($f);
使用以下命令再次保存.txt文件:

$lines = file("text.txt",FILE_IGNORE_NEW_LINES);
// modify
foreach($lines as &$line) {
   $val = explode("=",$line);
   if ($val[0]=="server-port") {
      $val[1] = "25585";
      $line = implode("=",$val);
   }
}
unset($line);

// save again
$f = fopen("text.txt","w");
foreach($lines as $line) {
   fwrite($f,$line.PHP_EOL);
}
fclose($f);
您可能需要使用
更改您的
#
注释符号

更新

<?php

$file = "file.txt";

$content = file($file);

foreach ($content as $line_num => $line) {
    if (false === (strpos($line, 'server-port=25565'))) continue;

    $content[$line_num] = "server-port=25585\n";
}

file_put_contents($file, $content);

既然您的格式看起来很像PHP配置文件
(.ini)
,为什么不使用函数呢

$ini = parse_ini_file("text.txt");
echo "<pre>".print_r($ini,TRUE)."</pre>";
更改它:

$f = fopen("text.txt","w");
foreach($ini as $k=>$v) {
   fwrite($f,$k."=".$v.PHP_EOL);
}
fclose($f);
使用以下命令再次保存.txt文件:

$lines = file("text.txt",FILE_IGNORE_NEW_LINES);
// modify
foreach($lines as &$line) {
   $val = explode("=",$line);
   if ($val[0]=="server-port") {
      $val[1] = "25585";
      $line = implode("=",$val);
   }
}
unset($line);

// save again
$f = fopen("text.txt","w");
foreach($lines as $line) {
   fwrite($f,$line.PHP_EOL);
}
fclose($f);
您可能需要使用
更改您的
#
注释符号

更新

<?php

$file = "file.txt";

$content = file($file);

foreach ($content as $line_num => $line) {
    if (false === (strpos($line, 'server-port=25565'))) continue;

    $content[$line_num] = "server-port=25585\n";
}

file_put_contents($file, $content);
您可以使用或

您可以使用或

您可以使用或

您可以使用或



Use should work?@Ericsh不总是相同的服务器端口值,我想查找“服务器端口”并替换值。Use should work?@Ericsh不总是相同的服务器端口值,我想查找“服务器端口”并替换值。Use should work?@Ericsh不总是相同的服务器端口值,我想找到一个“服务器端口”并替换值。使用应该有效吗?@Ericsh服务器端口的值不总是相同的,我想找到一个“服务器端口”并替换值。#Minecraft服务器属性#周二9月23日18:07:26 CEST 2014这在保存后被删除,值“true”和“false”也被删除。似乎
parse_ini_文件
删除了布尔值。您可以更改为
0
1
,这是
.ini
布尔可选项。
#
产生错误,您必须使用
ini
文件的注释符号,但这不是
。ini
文件,这是minecraft服务器的配置文件。#minecraft服务器属性#周二9月23日18:07:26 CEST 2014保存后删除,值“true”和“false”也被删除。似乎
解析ini#u文件
删除了布尔值。您可以更改为
0
1
,这是
.ini
布尔可选项。
#
产生错误,您必须使用
ini
文件的注释符号,但这不是
。ini
文件,这是minecraft服务器的配置文件。#minecraft服务器属性#周二9月23日18:07:26 CEST 2014保存后删除,值“true”和“false”也被删除。似乎
解析ini#u文件
删除了布尔值。您可以更改为
0
1
,这是
.ini
布尔可选项。
#
产生错误,您必须使用
ini
文件的注释符号,但这不是
。ini
文件,这是minecraft服务器的配置文件。#minecraft服务器属性#周二9月23日18:07:26 CEST 2014保存后删除,值“true”和“false”也被删除。似乎
解析ini#u文件
删除了布尔值。您可以更改为
0
1
,这是
.ini
布尔可选项。
#
产生错误,您必须使用
ini
文件的注释符号,但这不是
。ini
文件,这是minecraft服务器的配置文件。服务器端口的值并不总是相同或(25565)@FilipET,所以只需查找
25565
并替换为
25585
,对吗,我需要找到一个
服务器端口
,然后提取
服务器端口
的值并替换它。@FilipET您想在文件中替换它,还是只是在屏幕上回显?@FilipET我显然缺少一些东西。我发布的内容在文件中找到了
server-port=25565
,并将其替换为
server-port=25585
——您是否希望使用某种附加功能?或者你的意思是,在包含
服务器端口
的文件中只查找一行,然后用其他内容替换它,比如
服务器端口=xxxxx
?服务器端口的值并不总是相同的,或者(25565)@FilipET,所以只需查找
25565
并替换为
25585
,对吗,我需要找到一个
服务器端口
,然后提取
服务器端口
的值并替换它。@FilipET您想在文件中替换它,还是只是在屏幕上回显?@FilipET我显然缺少一些东西。我发布的内容在文件中找到了
server-port=25565
,并将其替换为
server-port=25585
——您是否希望使用某种附加功能?或者你的意思是,在包含
服务器端口
的文件中只查找一行,然后用其他内容替换它,比如
服务器端口=xxxxx
?服务器端口的值并不总是相同的,或者(25565)@FilipET,所以只需查找
25565
并替换为
25585
,对吗,我需要找到一个
服务器端口
,然后提取
服务器端口
的值并替换它。@FilipET Do y