2017-12-15 16 views
0

PHPを使用して指定した文字列の後にファイルにテキストを追加します。配列へPHPを使用して指定した文字列の後にテキストを挿入

$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); 

唯一、このコードが置かれないラインと:

は例えば、私は結果なしでこのコードを使用し

#redundant LDAP {文字列の後に単語「LDAPS」を追加したいですその単語を追加せずにファイルに挿入します。

+0

'$どこから来るのserver'のでしょうか? – RiggsFolly

+0

**このコードの中に何かに 'ldaps'という単語を追加しようとしても**試みません。 – RiggsFolly

+0

' default'ファイルの内容は何ですか? – Philipp

答えて

0
$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); 
0

現在のところ、file_put_contentsコードを変更するだけで問題はありません。 file_put_contents expectとstringですが、配列を渡したいとします。 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); 
関連する問題