Intereting Posts
Ошибка Google Crawl Error 500 и PHP Error (со странным решением) Отправка данных POST на Android Как нарисовать фигуру с помощью части изображения в php Сортировка ассоциативного массива по значению в порядке убывания и сохранения, когда значения одинаковы сеть прекрасна, но не может создать проект laravel и показать ошибку в команде Исправить пути перезаписи файла .htaccess для silex? Получить имя файла, содержащего скрипт PHP SimpleXML – добавить новый узел, используя ранее объявленное пространство имен – как? Проверка того, содержит ли строка целое число PHP Игнорирование моего max_execution_time Как наложить HTML сгенерированный PDF поверх существующего PDF? CakePHP $ принадлежит Не работает Сохранять количество кликов в базе данных, используя php используя ЗАПОМНЕННЫЕ ПРОЦЕДУРЫ: разные результаты в mysqli-> query («CALL select_procedure») VS mysqli-> query («SELECT …») Использование квадратных скобок в скрытых вводных полях HTML

PHP – редактирование / удаление определенной строки в файле

У меня есть файл users.txt который содержит:

 "ID" "Access" ;Expire>>26-08-2013<< "ID" "Access" ;Expire>>27-08-2013<< "ID" "Access" ;Expire>>28-08-2013<< 

Я не проверял, больше ли дата истечения, чем текущее время, и если это так, я хочу добавить точку с запятой в начале этой строки или просто удалить эту строку.

Код, который я написал до сих пор, заключается в следующем:

 $files = file('users.txt'); foreach ($files as $line) { $pattern = '/>>(.*)<</'; preg_match($pattern, $line, $matches); $expiredate = strtotime($matches[1]); $currdate = strtotime(date('dm-Y')); if ($currdate > $expiredate) { echo 'access expired... edit/delete the line<br/>'; } else { echo 'do nothing, its ok -> switching to the next line...<br/>'; } } 

Он извлекает «дату истечения срока действия» из каждой отдельной строки из файла. Он также проверяет, превышает ли он текущую дату, но на данный момент я не знаю, как редактировать (добавив точку с запятой в начале) или удалить строку, которая удовлетворяет условию.

Какие-либо предложения?

Попробуйте вот так:

 $files = file('users.txt'); $new_file = array(); foreach ($files as $line) { $pattern = '/>>(.*)<</'; preg_match($pattern, $line, $matches); $expiredate = strtotime($matches[1]); $currdate = strtotime(date('dm-Y')); if ($currdate > $expiredate) { // For edit $line = preg_replace('/condition/', 'replace', $line); // Edit line with replace $new_file[] = $line; // Push edited line //If you delete the line, do not push array and do nothing } else { $new_file[] = $line; // push line new array } } file_put_contents('users.txt', $new_file); 

Если вы хотите отредактировать эту строку, используйте preg_match и нажмите отредактированную строку на новый массив.

Если вы хотите удалить эту строку, ничего не делайте. Просто не обращай внимания.

Если вы хотите перейти к следующей строке, нажмите текущую строку на новый массив.

При окончательном сохранении new array в файл.

Основной процесс:

 open main file in readonly mode open secondary (temp) file in writeonly mode Loop: readline from main file process the line save to secondary file until end of file close both files delete the main file rename the secondary file.