我有一个包含以下数据的文本文件:
1_fjd
2_skd
3_fks
我想用php替换文本文件中的一个部分。例如,我想这样做:
找到以“2_
”开头的行,并将其替换为“2_word
”,以便将“2_”后的所有内容替换为:“word”。我怎么能在PHP中做到这一点?
答案 0 :(得分:10)
你不需要正则表达式。请尝试以下方法:
file()
将文件加载到数组中并循环使用2_
$word
并将其连接到$result
字符串$result
字符串file_get_contents()
并将结果写入文件代码:
$lines = file('file.txt');
$word = 'word';
$result = '';
foreach($lines as $line) {
if(substr($line, 0, 2) == '2_') {
$result .= '2_'.$word."\n";
} else {
$result .= $line;
}
}
file_put_contents('file.txt', $result);
现在,如果发生了替换,那么file.txt
将包含类似的内容:
1_fjd
2_word
3_fks
答案 1 :(得分:1)
文件:
1_fjd
2_skd
1_fff
通话:
replaceInFile("1_", "pppppppppp", "test.txt");
输出:
1_pppppppppp
2_skd
1_pppppppppp
功能:
function replaceInFile($what, $with, $file){
$buffer = "";
$fp = file($file);
foreach($fp as $line){
$buffer .= preg_replace("|".$what."[A-Za-z_.]*|", $what.$with, $line);
}
fclose($fp);
echo $buffer;
file_put_contents($file, $buffer);
}
PS:只有在$ what之后只有a到Z的字母时才会起作用。如果要支持更多字符,则必须更改preg_replace模式。
答案 2 :(得分:0)
好吧,我刚刚用3行自己制作了这个。我不会发布它因为你不会从中学习。我会告诉你你需要什么。 explode(表示必须更换第1 _
之后的所有内容)和str_replace(以替换couse)只需阅读手册,您就能理解它。祝你好运
修改强> 当然还有:fopen