У меня есть файл 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.