Home >Backend Development >PHP Problem >How to delete any line in a file in php?

How to delete any line in a file in php?

coldplay.xixi
coldplay.xixiOriginal
2020-07-10 10:49:452696browse

How to delete any line in a file in php: first 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; then when processing the corresponding The array element of the deleted row is not read in; just save the file at the end.

How to delete any line in a file in php?

php method to delete any line in the file:

Implementation ideas:

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 the array element corresponding to the line to be deleted is processed, it is not read. It,finally saves the file.

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 third line of the test.txt file. 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 a problem 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 "Automatic 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 whether the format is "auto-wrap" or not, 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).

By modifying the above program, we can also easily delete all empty lines in the file (lines with only spaces and carriage returns or only carriage returns): use ## when traversing the array and reading in the saved string. #trimDetect 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) Then reserve a carriage return character (which is used as a pointer to the end of the file).

Related learning recommendations:

PHP programming from entry to proficiency

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