dongsha2792 2016-08-03 10:16
浏览 33
已采纳

用Laravel或PHP替换另一行

So I have text file that content looks, for example, as folows:

Name: 'John',

Surname: 'Doe',

Age: 35

But I don't know for sure if the current surname is Doe, anything could be generated there.

And I need to replace this surname with another one. So I need to somehow open the file, find the place I need (I know for sure that it starts with Surname: ' and ends with ',, and I need to replace string between these two substrings, whatever it was before, without breaking the file structure (losing line breaks and so on; the actual file is pretty long, so adding manually is not an option).

So far I've tried this

$content = file_get_contents('text.txt');
$search = "/[^Surname: '](.*)[^',]/";
$replace = 'Smith';
$content = preg_replace($search,$replace,$content);
file_put_contents('text.txt', $content);

But it replaces almost everything with 'Smith', because the combination of ', is pretty common in this file, and also it turns the entire file into one line.

So what could I do to solve my problem? Would highly appreciate any possible help!

UPD: str_replace could be what I need, but first then I need to retrieve the whole line Surname: 'Doe', from the file to get the current surname.

  • 写回答

3条回答 默认 最新

  • douye2110 2016-08-03 10:25
    关注

    I would use the regex /^Surname: '.*',$/m based on your description and replace it with Surname: 'Smith',.

    Code:

    <?php
    $content = file_get_contents('text.txt');
    $search = "/^Surname: '.*',$/m";
    $replace = "Surname: 'Smith',";
    $content = preg_replace($search, $replace, $content);
    file_put_contents('text.txt', $content);
    

    Demo:

    $ cat text.txt
    Name: 'John',
    Surname: 'Doe',
    Age: 35
    $ php a.php
    $ cat text.txt
    Name: 'John',
    Surname: 'Smith',
    Age: 35
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频