2017-09-12 113 views
0

我試圖修改我在tokuwiki中使用的txt文件。如何從txt文件中刪除不需要的空間

我的txt文件這樣的頂部產生時間戳:

function filecont($file,$data) 
{ 
    $fileContents = file($file); 

    array_shift($fileContents); 
    array_unshift($fileContents, $data); 

    $newContent = implode("\n", $fileContents); 

    $fp = fopen($file, "w+"); 
    fputs($fp, $newContent); 
    fclose($fp); 
} 

而且我原來的txt文件看起來是這樣的:

現在,當我用我的功能:

$txt= "Last generated: " . date("Y M D h:i:s"); 
filecont($file,$txt); 

我得到這樣的結果:

現在我不想刪除我的====== Open IoT book ======,這可能是因爲我在第一行中沒有空白空間?

但是我遇到的最糟糕的問題就是生成了許多不需要的空白空間。

我只希望在TXT文件和其他任何觸及頂部得到last generated

回答

2

我通過改變測試代碼,並去除多餘的換行符文件的元素行:

$fileContents = file($file); 

$fileContents = file($file, FILE_IGNORE_NEW_LINES); 

添加FILE_IGNORE_NEW_LINES標誌會停止將新行添加到每個元素/行。

http://php.net/manual/en/function.file.php

我也刪除了array_unshift(),這會在文件中留下'======打開IoT book ======'。

所以我最後的作用是這樣的:

function filecont($file,$data) 
{ 
    $fileContents = file($file, FILE_IGNORE_NEW_LINES); 

    //array_shift($fileContents); Removed to preserve '====== Open IoT book ======' line. 
    array_unshift($fileContents, $data); 

    $newContent = implode("\n", $fileContents); 

    $fp = fopen($file, "w+"); 
    fclose($fp); 
} 
+0

工作過,謝謝。 PS我甚至不知道有一個FILE_IGNORE_NEW_LINES大聲笑 – Godhaze

+0

沒問題。很高興我能幫上忙。 – Springie

1

也許只是刪除這一行

array_shift($fileContents); 

解決問題了嗎?

+0

我以前嘗試過,但我有語法錯誤!不知道爲什麼 – Godhaze

1

,當你得到你需要檢查Last generated:是否是你的第一個行或不accordong它宇需要使用array_shift

$fileContents = file($file); 
    if(stripos($fileContents[0],"Last generated:") !== false) 
    { 
    array_shift($fileContents); //if found use shift 
    } 

    array_unshift($fileContents, $data); 
+0

這個if語句也幫助了我,謝謝! – Godhaze