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.
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 thetest.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]; }
Related learning recommendations:
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!