Home  >  Article  >  Backend Development  >  How to delete any line in a file in php

How to delete any line in a file in php

王林
王林Original
2020-11-10 10:48:052762browse

How to delete any line in a file in php: first read the file line by line into the array; then traverse the array and add the value of each element in the array to the string to be saved. When processed The lines to be deleted are not read in; just save the file at the end.

How to delete any line in a file in php

Read the file into the array line by line, then traverse the array and add the value of each element of the array to the string to be saved. When processed, the value corresponding to The array element of the line to be deleted is not read in and the file is finally saved.

(Learning video recommendation: java video tutorial)

Implementation method:

$num=2;
//要删除的行序号 
$fp=file("test.txt"); 
$total=count($fp); 
//取得文件总行数 
foreach ($fp as $line) { 
//按行分解内容并 
$tmp[]=$line; 
//逐行写入数组 
} 
for($i=0;$i<$total;$i++){ 
//若$i的值不等于要删除的行序号 
if($i<>$num) 
$savestr.=$tmp[$i]; 
} 
//写入文件 
$fp=fopen("test.txt","w"); 
fwrite($fp,$savestr); 
fclose($fp);

Execute the above PHP program, it will delete the test.txt file The third row. The line sequence number of the file starts from 0, not from 1 as we usually understand, which is the same as the subscript number of the array element.

There is an issue that needs to be clarified, which is the so-called concept of "line". Let us use Notepad to write a file. After a line is finished, we press Enter or do not type. After saving the file, the file will have one line; if we type a line and then press Enter and then type another line, the file will have two lines after saving. OK. In Notepad, when we set the format to "auto wrap", a line of text will automatically wrap when it reaches the right end, but it is not two lines, it is still just one line.

In Notepad, no matter how much text there is, and no matter whether the format is "auto-line wrap", if there is no carriage return character, it can only be one line. In other words, the line mark is the carriage return character (noted as "\r\n" in PHP).

Modify the above program, we can also easily delete all empty lines in the file (lines with only spaces and carriage returns or lines with only carriage returns): Use trim detection when traversing the array and reading in the saved string. Each array element

for($i=0;$i<$total;$i++){ if(trim($tmp[$i])<>"") $savestr.=$tmp[$i]; }

This program will delete all blank lines in the file, but if the last line of the file is a blank line, it will clear its whitespace characters (if any) and retain a carriage return character. (It is used as a pointer to the end of the file).

Related recommendations: php training

The above is the detailed content of How to delete any line in a file in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn