I need a simple code in php that can delete all lines before a line that included a specific word, for example this is contents of foo.txt:
.
.
eroigjeoj
dvjdofgj
dsfdsft
reytyjkjm
.
.
[DATA]
1,2,4
3,4,5
.
.
.
I want to delete all lines before line that included "[DATA]" and delete that line too. and the result be a foo.txt with this content:
1,2,4
3,4,5
.
.
.
Here is one approach, maybe not the most efficient.
Create a new text file (text2).
$text2 = fopen("text2", "w");
Initialise a boolean value to false.
$hitWord = false;
Read through original text file (text1) line by line until you hit the String '[DATA]', adding the subsequent lines to text2
$handle = fopen("text1.txt", "r"); if ($handle) { while (($line = fgets($handle)) !== false) { if($hitWord){ fwrite($text2, $line . "\\n"); }else{ if(strpos($line,'[DATA]') !== false){ $hitWord = true; } } } fclose($handle); } else { // error opening the file. }
Delete text1 using unlink($text1)
// you will need path
Rename text2 to text1 using rename()
function.
ALTERNATIVELY
You could use the same approach above. Except instead of editing a new text file, edit a new String and just replace all the lines in text1
with this string at the end of the program.
This would save you having to create/delete/edit new files. Make sure new line is used correctly
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.