簡體   English   中英

如何從文本文件(PHP)更改行

[英]How to change a line from a text file (PHP)

文字檔(text.txt):

#Minecraft server properties
#Tue Sep 23 18:07:26 CEST 2014
generator-settings=
op-permission-level=4
allow-nether=true
level-name=world
enable-query=true
allow-flight=false
announce-player-achievements=true
server-port=25565
query.port=25565
level-type=DEFAULT
enable-rcon=false
force-gamemode=false
level-seed=
server-ip=
max-build-height=256

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

server-port=25565

用。。。來代替:

server-port=25585

但是找不到“ server-port = 25565”並替換為“ server-port = 25585”,發現服務器端口和分配值的行需要替換。

例:

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

編輯:並找到並保存替換文本文件。

由於您的格式看起來像一個PHP配置文件(.ini) ,因此為什么不使用parse_ini_file函數呢?

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

要么

echo $ini["server-port"];

更改:

$ini["server-port"] = 25585;

使用以下方法再次保存您的.txt文件:

$f = fopen("text.txt","w");
foreach($ini as $k=>$v) {
   fwrite($f,$k."=".$v.PHP_EOL);
}
fclose($f);

您可能需要使用;更改#注釋符號;

更新

$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);

您可以使用strpos()stripos()

<?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);

之前

#Minecraft server properties
#Tue Sep 23 18:07:26 CEST 2014
generator-settings=
op-permission-level=4
allow-nether=true
level-name=world
enable-query=true
allow-flight=false
announce-player-achievements=true
server-port=25565
query.port=25565
level-type=DEFAULT
enable-rcon=false
force-gamemode=false
level-seed=
server-ip=
max-build-height=256

#Minecraft server properties
#Tue Sep 23 18:07:26 CEST 2014
generator-settings=
op-permission-level=4
allow-nether=true
level-name=world
enable-query=true
allow-flight=false
announce-player-achievements=true
server-port=25585
query.port=25565
level-type=DEFAULT
enable-rcon=false
force-gamemode=false
level-seed=
server-ip=
max-build-height=256

編輯

您可以將$new_port變量修改為所需的任何內容。

$path = "file.txt";
$new_port = 25585;
$content = file($path);

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

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

file_put_contents($path, $content);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM