Tjo!
Om jag har info som ser ut så här:
box up 2+3:56, 0 users, load 0.00, 0.00, 0.00
oasis up 14+10:08, 0 users, load 0.24, 0.23, 0.09
Hur kan man göra för att då det att se ut så här:
2 days, 3 hours, 26 minutes
det är _endast_ första raden jag vill ha, den andra är ointressant
:-)
spangoMedlem sedan juni 20008 205 inlägg $text = 'box up 2+3:56, 0 users, load 0.00, 0.00, 0.00
oasis up 14+10:08, 0 users, load 0.24, 0.23, 0.09';
$pattern = '/^.*?(\d+)\+(\d+):(\d+).*$/sD';
$repl = '$1 days, $2 hours, $3 minutes';
echo preg_replace($pattern, $repl, $text);
tack för ett supersnabbt svar :D
men tyvärr funkade det inte, endast samma sak returneras :-/
nicclasMedlem sedan feb. 20001 050 inlägg $text = 'box up 2+3:56, 0 users, load 0.00, 0.00, 0.00
oasis up 14+10:08, 0 users, load 0.24, 0.23, 0.09';
$pattern = '/^.*?(\d+)\+(\d+):(\d+).*$/mis';
$repl = '\\1 days, \\2 hours, \\3 minutes';
echo preg_replace($pattern, $repl, $text);
/nicclas - http://mina.nyhetsrubriker.net
tackar, funkade fint
men hade en liten bugg ;P
Om tiden inte är t.ex 2+3:56 (2 dagar ca 4 timmar), utan istället 3:56 (ca 4 timmar), så tas automatiskt nästa rads värden istället :-(
kan man få det att stå t.ex 0 days, om det är några dagar ;-)
spangoMedlem sedan juni 20008 205 inlägg Arrrgh.. hata att backslashar klipps bort...
$text = 'box up 3:56, 0 users, load 0.00, 0.00, 0.00
oasis up 14+10:08, 0 users, load 0.24, 0.23, 0.09';
$pattern = '/^.*?(?:(\\d+)\\+)?(\\d+):(\\d+).*$/sDe';
$replCall = 'format_uptime_nicely("$1", "$2", "$3");';
echo preg_replace($pattern, $replCall, $text);
function format_uptime_nicely($days, $hours, $minutes){
return ($days ? "$days days, " : '') . "$hours hours, $minutes minutes";
}