我有一个包含以下数据的文本文件:
1_fjd
2_skd
3_fks
我想使用 php 替换我的文本文件中的一部分。例如我想这样做:
找到以 " " 开头的行2_
并将其替换为 " 2_word
",因此 '2_' 之后的所有内容都将替换为:'word'。我怎样才能在 php 中做到这一点?
您不需要正则表达式。尝试以下操作:
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_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 模式。
好的,我自己只用了 3 行代码就完成了这个。我不会发布它,因为你不会从中学习。我会告诉你你需要什么。爆炸(表示_
必须替换第一个之后的所有内容)和str_replace(替换 couse) 只需阅读手册,您将能够理解它。祝你好运
编辑: 当然还有:fopen