我有一个文件,例如:hello.txt,其中包含以下内容
您好 尼斯
插入文本标记我想在#### INSERT TEXT MARKER ####之后创建一个输入“Hello World”的脚本。
我使用下面的代码来做。
<?php
function insert_into_file($file_path, $insert_marker, $text, $after = true) {
$contents = file_get_contents($file_path);
$new_contents = preg_replace($insert_marker, ($after) ? '$0' . $text : $text . '$0', $contents);
return file_put_contents($file_path, $new_contents);
}
$file_path = "hello.txt";
$insert_marker = "####INSERT TEXT MARKER####";
$text = "Hello World";
$num_bytes = insert_into_file($file_path,$insert_marker,$text,true);
if ($num_bytes === false) {
echo "Could not insert into file $file_path.";
} else {
echo "Insert successful!";
}
?>
但我的文件是空的。 请帮忙!
答案 0 :(得分:1)
您需要分隔符。
$new_contents = preg_replace('/'.$insert_marker.'/', ($after) ? '$0' . $text : $text . '$0', $contents);
最好使用preg_quote()
:
$new_contents = preg_replace('/'.preg_quote($insert_marker, '/').'/', ($after) ? '$0' . $text : $text . '$0', $contents);
答案 1 :(得分:0)
除了你的正则表达式缺少分隔符之外,你实际上并不需要它;以下代码将执行相同的操作:
file_put_contents($file_path, str_replace(
$insert_marker,
$after ? $insert_marker . $text : $text . $insert_marker,
$contents
));