Forum » Server-Side scripting » preg_match tijd
Berichten: 70
avatar
Offline Stuur privebericht
In een tekst log bestand heb ik dit staan:
Code | Selecteer Alles
minimaliseren
1
[07.17.2010 11:46:50Hier wat info


Nu wil ik alleen de info van de afgelopen 5 minuten laten zien.
Mijn manier werkt niet. Weet iemand of er een manier is om dit wel te laten werken?
Dit is mijn manier:
Code | Selecteer Alles
minimaliseren
1
if( preg_match('/[^date("m.d.Y H:i:s", time()-300)-date("m.d.Y H:i:s", time())]/',$data[$i]) )

Laatst gewijzigd door snor op 2010-07-17 12:34:17
17-07-2010 12:33
Dit topic is 370 keer bekeken door 54 verschillende leden
Reacties op: "preg_match tijd"
1
zomgf
Berichten: 81
avatar
Offline Stuur privébericht
als je met een database gaat werken dat weet ik wel de oplossing anders niet.

met een database is het makelijker lijkt me dus als je daarvoor kies dan moet je het even zeggen dan geef ik je de oplossing xd

Sander
17-07-2010 17:26
Berichten: 2123
avatar
Offline Stuur privébericht
Ik zal je proberen met een beginnetje:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
<?php 

$content 
file_get_contents('log.txt');

$content explode("\n"$content);

foreach(
$content as $line) {
 echo 
'Date: 'substr($line119) .'';
}

?>


Dit moet toch wel werken, lijkt me. Hoor er graag van.
17-07-2010 17:31
Berichten: 70
avatar
Offline Stuur privébericht
Quote: sander

als je met een database gaat werken dat weet ik wel de oplossing anders niet.

met een database is het makelijker lijkt me dus als je daarvoor kies dan moet je het even zeggen dan geef ik je de oplossing xd

Sander


Bedankt. Maar ik wil niet met een db werken.

Quote: Killingdevil

Ik zal je proberen met een beginnetje:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
<?php 

$content 
file_get_contents('log.txt');

$content explode("\n"$content);

foreach(
$content as $line) {
 echo 
'Date: 'substr($line119) .'';
}

?>


Dit moet toch wel werken, lijkt me. Hoor er graag van.


Dat werkt wel. Maar zoiets had ik al. En het is niet precies wat ik wil. Want nu word van elke regel de tijd geëchood.
En ik wil dat alleen de regels die worden geëchood die zich tussen de huidige tijd bevinden en van 5 minuten geleden.

Dit is wat ik al had:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
for($i=0;$i<count($data);$i++) {

    if(
strpos($data[$i], "info die gezocht word") !== false) {
        
$date substr($data[$i], 119);
        echo
"$daten";
    }
18-07-2010 12:27
Berichten: 2123
avatar
Offline Stuur privébericht
In dat geval zal ik je nog wat verder op weg helpen!

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php 

$content 
file_get_contents('log.txt');

$content explode("n"$content);

foreach(
$content as $line) {
 echo 
'Date: 'substr($line119) .'';
 
$timestamp mktime(
  
substr($line122),
  
substr($line152),
  
substr($line182),
  
substr($line12),
  
substr($line32),
  
substr($line54)
 );
 if(
$timestamp time()-300) {
  continue; 
//break
 
}
}

?>


Weet niet of ik het helemaal goed heb geschreven, moet je maar even proberen. Heb het niet getest...
18-07-2010 17:30
Webdeveloper & Programmeu
Berichten: 1001
avatar
Offline Stuur privébericht
@killingdevil,
$timestamp = mktime(
substr($line, 12, 2),
substr($line, 15, 2),
substr($line, 18, 2),
substr($line, 1, 2),
substr($line, 3, 2),
substr($line, 5, 4),
);

laatste substr moet die , achter het ) nog weg.
18-07-2010 21:58
Berichten: 2123
avatar
Offline Stuur privébericht
@NielsB: Heb je inderdaad gelijk in, in een argumentenlijst is dat verplicht. Heb het gewijzigd.
18-07-2010 22:21
Berichten: 70
avatar
Offline Stuur privébericht
Ik krijg deze error:
Quote

Warning: mktime() expects parameter 1 to be long, string given in /home/deb32935/domains/novacrew.eu/public_html/rcon/1.php on line 16



Het script echood niet alleen de laatste 5 minuten tot het heden. Maar nog steeds alles.
En er worden verschillende delen van de zin uit de log file geëchood. Dus niet alleen de tijd en datum.
19-07-2010 15:53
Reageer op: "preg_match tijd"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden