使用 php 在指定字符串后插入文本
insert text after specified string using php
我想使用 PHP 在指定字符串后向文件添加文本。
比如我想在#redundant LDAP {
字符串
后面加上'ldaps'这个词
我使用这段代码没有结果:
$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);
这段代码所做的唯一一件事就是将行放入一个数组,然后插入到文件中而不添加单词。
目前,您只需修改 file_put_contents
代码,它就应该可以工作。 file_put_contents
期望和字符串,但你想传递一个数组。使用 join
,您可以再次将数组组合成一个字符串。
除此之外,您可能还想将 trim 添加到您的比较中,以避免出现空格和制表符问题。
$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);
$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);
我想使用 PHP 在指定字符串后向文件添加文本。
比如我想在#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);
这段代码所做的唯一一件事就是将行放入一个数组,然后插入到文件中而不添加单词。
目前,您只需修改 file_put_contents
代码,它就应该可以工作。 file_put_contents
期望和字符串,但你想传递一个数组。使用 join
,您可以再次将数组组合成一个字符串。
除此之外,您可能还想将 trim 添加到您的比较中,以避免出现空格和制表符问题。
$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);
$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);