2017-03-20 81 views
0

我在搜索文件中的字符串時遇到問題,在搜索到的字符串後面插入新行並在新添加的行上寫入。目前我使用下面的例子,從和討論的代碼,我發現: -使用PHP在文本文件的新行上搜索,插入和寫入

$target = '<18>'; 
$put = 'Enter'; 
$file = 'line.txt'; 

$filename = $file; 
$string_i_am_looking_for = $target; 
$lines = file($filename , FILE_IGNORE_NEW_LINES); 
$lines[$string_i_am_looking_for] = $put; 
file_put_contents($filename , implode("\n", $lines)); 

文本文件: -

<17> 
<18> 
<19> 
<20> 

在第一個動作,我能夠把放在文本文件中的$。

<17> 
<18>Enter 
<19> 
<20> 

但是,當我改變$目標=「< 20>」,我沒能在新的$目標後寫。它將出現在第一行旁邊。當我重新加載頁面時,它會繼續寫在第一行。下面是結果: -

<17>EnterEnterEnterEnterEnter 
<18>Enter 
<19> 
<20> 

回答

0

Enter是不以任何方式新的生產線。您必須將其替換爲\r\n\n(取決於文件換行符)。

$target = '<18>'; 
$put = "\r\n"; 
$file = 'line.txt'; 
+0

是的,我知道。它只是一個字符串而不是一個動作。 –

0

嘗試這個

$target = '<20>'; 
$put = 'Enter'; 
$file = 'line.txt'; 

$filename = $file; 
$string_i_am_looking_for = $target; 
$lines = file($filename , FILE_IGNORE_NEW_LINES); 
$key = array_search($string_i_am_looking_for,$lines); 
$toSearch = $target.$put; 
if(!in_array($toSearch,$lines)) { 
$lines[$key] = $target.$put; 
} 
file_put_contents($filename , implode("\n", $lines)); 
+0

當我加載它多次,第一行將替換$目標。在文本文件中的結果會是這樣: - <20>輸入<18><19><20>輸入......它應該是<17><18><19><20> EnterEnterEnter –

+0

已經更新了答案 – Vish744789