我有一个名为logs.txt
的文本文件,我正在尝试在PHP中创建一个脚本,该脚本应该检查是否存在以foo||
开头的字符串。如果存在,则应替换为特定字符串,否则将在文件末尾添加特定字符串。
这是我试图制作的代码:
<?php
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);
}
replaceInFile("foo||", "foo||hello", "logs.txt");
?>
但它并没有真正做我想要的。有人可以帮我修复代码吗?任何帮助表示赞赏。
答案 0 :(得分:0)
这应该有效:
$newline = preg_replace('/^' . $what . '(.*)$/', $with . '${1}', $line, 1 , $count);
$buffer .= ($count == 1) ? $newline : $line . $with;
如果您的搜索条件中包含/
,则常见分隔符为|
否|
。您需要创建一个捕获组,这需要在(
和)
之间。现在,您可以使用此捕获组,并将其替换为捕获组${
+编号+ }
。在你的情况下,你只有一个。