我想使用PHP在指定的字符串之后将文本添加到文件中。
例如,我想添加' ldaps'在#redundant LDAP {
字符串
我使用此代码时没有结果:
$lines = array();
foreach(file("/etc/freeradius/sites-enabled/default") as $line) {
if ("redundant LDAP {" === $line) {
array_push($lines, 'ldaps');
}
array_push($lines, $line);
}
file_put_contents("/etc/freeradius/sites-enabled/default", $lines);
这段代码唯一能做的就是将行放入数组,然后插入文件而不添加单词。
答案 0 :(得分:1)
$lines = array();
foreach(file("/etc/freeradius/sites-enabled/default") as $line)) {
// first switch these lines so you write the line and then add the new line after it
array_push($lines, $line);
// then test if the line contains so you dont miss a line
// because there is a newline of something at the end of it
if (strpos($line, "redundant LDAP {") !== FALSE) {
array_push($lines, 'ldaps');
}
}
file_put_contents("/etc/freeradius/sites-enabled/default", $lines);
答案 1 :(得分:0)
目前,您只应修改file_put_contents
代码,它应该有效。 file_put_contents
期望和字符串,但你想传递一个数组。使用join
,您可以将数组再次组合成一个字符串。
除此之外,您可能还需要在比较中添加修剪,以避免出现空格和标签问题。
$lines = array();
foreach(file("/etc/freeradius/sites-enabled/default") as $line) {
// should be before the comparison, for the correct order
$lines[] = $line;
if ("redundant LDAP {" === trim($line)) {
$lines[] = 'ldaps';
}
}
$content = join("\n", $lines);
file_put_contents("/etc/freeradius/sites-enabled/default", $content);