в настоящее время я могу удалить определенную строку из текстового файла, используя php. Однако после удаления этой строки будет оставлена пустая строка. Есть ли в любом случае для меня удаление этой пустой строки, чтобы линии позади могли двигаться вверх? Спасибо за помощь.
$DELETE = "the_line_you_want_to_delete"; $data = file("./foo.txt"); $out = array(); foreach($data as $line) { if(trim($line) != $DELETE) { $out[] = $line; } } $fp = fopen("./foo.txt", "w+"); flock($fp, LOCK_EX); foreach($out as $line) { fwrite($fp, $line); } flock($fp, LOCK_UN); fclose($fp);
это будет просто просматривать каждую строку, и если это не то, что вы хотите удалить, оно попадает в массив, который будет записан обратно в файл.
В самом деле? Я считаю этот muuuuch проще, только одна строка кода:
file_put_contents($filename, str_replace($line . "\r\n", "", file_get_contents($filename)));
Вы можете улучшить это, установив условия для прогнозирования ошибок.
<?PHP $file = "a.txt"; $line = 3-1; $array = file($file); unset($array[$line]); $fp = fopen($file, 'w+'); foreach($array as $line) fwrite($fp,$line); fclose($fp); ?>
с<?PHP $file = "a.txt"; $line = 3-1; $array = file($file); unset($array[$line]); $fp = fopen($file, 'w+'); foreach($array as $line) fwrite($fp,$line); fclose($fp); ?>