我有一个大问题。我必须在文本文件中用6个不同的单词更改6行,但是功能str_replace
不起作用。为什么?
$prendo_link_per_replace = "ex.txt";
$uno = "1";
$due = "2";
$tre = "3";
$quattro = "4";
$cinque = "5";
$sei = "6";
$testofile = file_get_contents($prendo_link_per_replace);
$testofile = str_replace($uno, $due, $testofile);
$testofile = str_replace($due, $tre, $testofile);
$testofile = str_replace($tre, $quattro, $testofile);
$testofile = str_replace($quattro, $cinque, $testofile);
file_put_contents($prendo_link_per_replace, $testofile);
我有2个文件:
check.php
text.txt
在text.php
中有:
1
2
3
4
5
6
我发布的上一个代码将用下一个数字(2,3,4,5)替换数字1,2,3,4,但所有行的输出仅为5。我已经尝试过使用循环或fflush()或fwrite()或unset(),但输出不会改变。
运行代码后,我的页面text.txt
更改为:
5
5
5
5
5
6
为什么?有什么建议吗?
我正在使用Amazon Linux Ami 2,但是到处都无法正常工作。
真正的问题是我不能做多个str_replace
。我该如何解决?
谢谢
答案 0 :(得分:1)
如果这是您的输入文件:
1
2
3
4
您可以尝试以相反的顺序替换,例如 :
$file_name = "ex.txt";
$file_content = file_get_contents($file_name);
$one = "1";
$two = "2";
$three = "3";
$four = "4";
$five = "5";
$file_content = str_replace($four, $five, $file_content);
$file_content = str_replace($three, $four, $file_content);
$file_content = str_replace($two, $three, $file_content);
$file_content = str_replace($one, $two, $file_content);
file_put_contents($file_name, $file_content);
您的输出文件将是:
2
3
4
5
答案 1 :(得分:1)
您可以使用str_replace()
,而不是使用页面上有更换订单提示注释的strtr()
。您可以在代码中看到我已将所有翻译构建到一个数组中,因此它们都可以同时完成,这还解决了根据替换顺序更改内容的问题。
$uno = "1";
$due = "2";
$tre = "3";
$quattro = "4";
$cinque = "5";
$sei = "6";
$testofile = file_get_contents($prendo_link_per_replace);
$trans = [$uno => $due, $due => $tre, $tre => $quattro, $quattro =>$cinque ];
$testofile = strtr($testofile, $trans );
file_put_contents($prendo_link_per_replace, $testofile);