У меня есть файл со следующими строками. Я хочу идентифицировать строки с временными метками менее недели (начиная с 22 августа для этого примера).
log3.txt
28-08-2011 10:29:25 A string
29-08-2011 14:29:25 A new string
20-08-2011 14:29:25 Don’t include
php file
if($file = fopen("/opt/apache2/htdocs/log3.txt", "r"))
{
while(!feof($file))
{
$contents = fgets($file, 23); // This is supposed to be 22.
echo $contents; // With 22 it only returns 08-29-2011 14:29:25 P
if(strtotime($contents) > strtotime("last Monday"))
{
$string1 = fgets($file);
echo "In if $string1";
// Do something
}
else
{
$string1 = fgets($file);
echo "In else $string1"; //Always goes to else statement.
}
}
}
Временные метки создаются с date('m-d-Y H:i:s')
.
Зачем fgets
нужно 23 символа, тогда как на самом деле их 22.
Что я делаю не так с strtotime?
Как лучше всего анализировать строки с отметками времени меньше недели назад.
РЕДАКТИРОВАТЬ: начало работать
$date = DateTime::createFromFormat('d-m-Y H:i:s', $contents);
if(strtotime($date->format('d-m-Y H:i:s')) > strtotime("last Monday"))
Используйте функцию DateTime с форматом d-m-Y
или m/d/Y
.
Спасибо за помощь, ребята.