dqhsv0147421 2014-09-23 17:01
浏览 35
已采纳

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

Text file(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

How to replace the value of some line, such as these:

server-port=25565

Replace with:

server-port=25585

But no to find 'server-port=25565' and replace with 'server-port=25585' It is found that the lines in which the server port and to allocate a value that needs to be replaced.

Example:

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

EDIT: And when finded this and saved replace the text file.

  • 写回答

2条回答 默认 最新

  • dongxiang5879 2014-09-23 17:17
    关注

    Since your format looks suspiciously like a PHP configuration file (.ini), why not using the parse_ini_file function?

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

    or

    echo $ini["server-port"];
    

    Change it:

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

    Save again your .txt file with:

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

    You may need to change your # comments symbol though with ;

    UPDATE

    $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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大