2015-05-18 2 views
1

Я видел using fseek to insert string before last line этот вопрос, но это не решает мою проблему. Я не использую тег??>. Php версия PHP 5,4Как вставить строку перед последней строкой?

example line1 
example line2 
//i need insert here 
lastline $eg}; 

Мой код работает, но это добавляет пустые строки после того, как все линии:

$filename = 'example.php'; 
    $arr = file($filename); 
    if ($arr === false) { 
     die('Error' . $filename); 
    } 
array_pop($arr); 
file_put_contents($filename, implode(PHP_EOL, $arr)); 
/// I'm deleting last line here 


$person = "my text here\n"; 
file_put_contents($filename, $person, FILE_APPEND); 
$person = "andherelastline"; 
file_put_contents($filename, $person, FILE_APPEND); 
//and then add again here 
+0

Вы читали документацию функции [файл '()'] (HTTP : //php.net/manual/en/function.file.php)? В разделе «Возвращаемые значения» он четко указывает: * «Каждый элемент массива соответствует строке в файле **, когда новая строка все еще прикреплена **.» *. Дополнительные строки, которые вы получаете, добавляются 'implode (PHP_EOL, $ arr)'. Передайте пустую строку ('' '') в качестве первого аргумента 'implode()', а дополнительные строки исчезнут. – axiac

ответ

3
$file = "tmp/saf.txt"; 
$fc = fopen($file, "r"); 
while (!feof($fc)) { 
    $buffer = fgets($fc, 4096); 
    $lines[] = $buffer; 
} 

fclose($fc); 

//open same file and use "w" to clear file 
$f = fopen($file, "w") or die("couldn't open $file"); 

$lineCount = count($lines); 
//loop through array writing the lines until the secondlast 
for ($i = 0; $i < $lineCount- 1; $i++) { 
    fwrite($f, $lines[$i]); 
} 
fwrite($f, 'Your insert string here'.PHP_EOL); 

//write the last line 
fwrite($f, $lines[$lineCount-1]); 
fclose($f); 
+0

Я пробовал эту, но навсегда петлю :(И уши все строки в текстовом файле –

+0

Я не могу проверить код прямо сейчас, так как я нахожусь на своем мобильном телефоне, но я отредактировал код. – eol

+0

Хорошо, теперь это должно работать. – eol

Смежные вопросы