s1gh Skrevet 22. september 2008 Del Skrevet 22. september 2008 (endret) Jeg prøver for tiden å lage et lite 'uptime'-script for min hjemmeside. Scriptet skal printe ut oppetiden på serveren, på denne måten: Uptime: X day(s) and X hour(s). Jeg har nå lastet ned uptime.exe fra Microsoft sine nettsider, og bruke denne koden for å lagre innholdet i en .txt-fil: $uptime = exec ("uptime.exe > uptime.txt"); Det som lagres i 'uptime.txt' er følgende: \\S1GH has been up for: X day(s), X hour(s), X minute(s), X second(s) - X er selvfølgelig antall dager, timer, minutter og sekunder. Dette føler jeg blir litt kronglete å bruke på hjemmesiden, så lurer derfor på hvordan jeg kan 'formatere' teksten, sånn at bare enkelte deler blir printet ut. I dette tilfellet: Uptime: X day(s) and X hours(s). - Hvordan gjør man dette? (vet liksom ikke hva jeg skal søke på heller, så Google har ikke akkurat vært min venn). //s1gh Endret 22. september 2008 av Sigh Lenke til kommentar
OISNOT Skrevet 22. september 2008 Del Skrevet 22. september 2008 (endret) Denne tar inn alt, med teksten bak for dager og timer. Kan tilpasses. $text = '\\S1GH has been up for: 4 day(s), 14 hour(s), 34 minute(s), 5 second(s)'; if (preg_match('/(\d+ day\(s\)), (\d+ hour\(s\))/', $text, $matches)) { //found, put in $matches print_r($matches); } else { //could not find uptime values } Denne bruker mer "vanlige" metoder for dem som ikke kan regex. $text = '\\S1GH has been up for: 4 day(s), 13 hour(s), 4 minute(s), 4 second(s)'; print_r($matches = sscanf(substr($text, strpos($text, ':') + 2), '%d day(s), %d hour(s), %d minute(s), %d second(s)')); Eg lærte regex fra denne boken, anbefales for alle som gjør tekst søk/erstatt. http://books.google.no/books?id=ucwR4KIvExMC&dq Endret 22. september 2008 av OISNOT Lenke til kommentar
s1gh Skrevet 22. september 2008 Forfatter Del Skrevet 22. september 2008 (endret) Nå vet jeg ikke helt om det er mulig å gjøre det på denne måten, men uansett: $test = exec ("uptime.exe"); print_r($matches = sscanf(substr($test, strpos($test, ':') + 2), '%d day(s), %d hour(s), %d minute(s), %d second(s)')); Dette er det som blir printet: Array ( [0] => 0 [1] => 7 [2] => 11 [3] => 32 ) Fikk også Array + noe annet, når jeg prøvde den andre funksjonen. Er det feil, eller blir det printet på den måten? Edit: Ahh, tror kanskje jeg skjønte det. Det printes ut i forskjellige arrays, som jeg senere kan bruke til å printe det jeg vil, eller? Endret 22. september 2008 av Sigh Lenke til kommentar
Martin A. Skrevet 22. september 2008 Del Skrevet 22. september 2008 $text = exec( 'uptime.exe' ); $text = substr( $text, strpos( $text, ':' ) +2 ); list( $days, $hours, $minutes, $seconds ) = sscanf( $text, '%d day(s), %d hour(s), %d minute(s), %d second(s)' ); echo "Uptime: {$days} day(s), {$hours} hour(s), {$minutes} minute(s), {$seconds} second(s)"; Lenke til kommentar
OISNOT Skrevet 23. september 2008 Del Skrevet 23. september 2008 Edit: Ahh, tror kanskje jeg skjønte det.Det printes ut i forskjellige arrays, som jeg senere kan bruke til å printe det jeg vil, eller? Ja, for begge metodene blir $matches et array med verdiene. I regex metoden returneres teksten med verdien. I sscanf metoden returneres kun verdiene. For å returnere verdiene med regex kan du endre til: preg_match_all('/(?:(\d+) (day|hour|minute|second)\(s\))+/', $text, $matches) Lenke til kommentar
s1gh Skrevet 23. september 2008 Forfatter Del Skrevet 23. september 2008 Edit: Ahh, tror kanskje jeg skjønte det.Det printes ut i forskjellige arrays, som jeg senere kan bruke til å printe det jeg vil, eller? Ja, for begge metodene blir $matches et array med verdiene. I regex metoden returneres teksten med verdien. I sscanf metoden returneres kun verdiene. For å returnere verdiene med regex kan du endre til: preg_match_all('/(?:(\d+) (day|hour|minute|second)\(s\))+/', $text, $matches) Ahh, takk. DA skjønner jeg litt mer! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå