所以我收到变量替换它在txt文件的某个区域并保存回来。我得到页码,根据它我得到爆炸数据。无论如何,我会在下面发布一个代码,以使其更清晰:
$pgnm = $_GET['page']; //This is the page number as I've said.
$conts = file_get_contents("content.txt");
content.txt的内容如下所示:
text1|text2|text3
我在某些页面中显示此内容。例如,在第一页:text1,第二个text2等
现在我正在处理一个我成功更改这些内容的表单。我得到了我所说的页码和文字:
$text = "new text"; //this is the content which I want to be replaced instead of text2.
我将content.txt文件保存后显示如下:text1 | new text | text2
让我们继续:
$exp = explode("|", $conts); //this explodes data into slashes.
$rep = str_replace($exp[$pgnm], $text, $conts);
file_put_contents("content.txt", $rep); // Saving file
所有这些上述操作都能很好地完成,但现在这是我的问题。这只有在content.txt有某些内容时才有效,如果它是空的则输入我的新文本,那就是全部:'新文本',这就是全部内容。也许我想添加第二页内容'new text2',在我完成输入后保存我希望文件显示如下:new text | new text2。如果content.txt的内容如下所示:'new text |' str_replace不替换空字符串。所以这也是我的另一个问题。
我尝试了一切,但无法解决这两个问题。提前感谢您的帮助!
答案 0 :(得分:0)
为什么不使用$exp
数组来构建内容。我的意思是$exp
将所有块一个一个地包含在array()
中。因此,您只需更改或向数组添加新值(不需要str_replace()
)。然后使用implode('|',$exp);
重建。
至于你的代码;
$exp = explode("|", $conts); //this explodes data into slashes.
$exp[$pgnm] = $text;
file_put_contents("content.txt", implode('|',$exp)); // Saving file
答案 1 :(得分:0)
而不是str_replace使用此代码:
$pgnm = 1;
$text = 'new text';
$conts = 'text1||text3';
$exp = explode('|', $conts);
$exp[$pgnm] = $text;
$rep = implode('|', $exp);
var_dump($rep); // string(20) "text1|new text|text3"