Avatar billede kataka Nybegynder
08. april 2007 - 21:34 Der er 5 kommentarer

00:00:17,800 + 57minutter. Hvordan?

Hej, jeg har en streng som indeholder en laaang tekst. Denne tekst kan se ud som følgende:

1
00:00:00,000 --> 00:00:01,300
...

2
00:00:02,700 --> 00:00:05,700
...

3
00:00:17,800 --> 00:00:19,600
...



Nu vil jeg bare gerne have et output som kan plusse tiden med et antal minutter OG plusse tallene(1,2,3...) ovenover med et bestemt tal.

Hvordan skal dette se ud?
Avatar billede kataka Nybegynder
08. april 2007 - 21:39 #1
<?php
$number = 493;
$time = "00:57:26:800";

$string = <<<END
1
00:00:00,000 --> 00:00:01,300
Tilfældig tekst

2
00:00:02,700 --> 00:00:05,700
Tilfældig tekst

3
00:00:17,800 --> 00:00:19,600
Tilfældig tekst
END;
?>

Det må være noget alá ovenstående og så gøre brug af preg_match_all, og så få fat i tallet og bagefter de to tider der er angivet lige under tallet
Avatar billede kataka Nybegynder
08. april 2007 - 21:44 #2
har lavet lidt, men kan ikke få det til at virke rigtigt. hvordan plusser man i en preg_replace?

<?php
$number = 493;
$time = "00:57:26:800";

$string = <<<END
1
00:00:00,000 --> 00:00:01,300
Tilfældig tekst

2
00:00:02,700 --> 00:00:05,700
Tilfældig tekst

3
00:00:17,800 --> 00:00:19,600
Tilfældig tekst
END;


echo "<pre>" . preg_replace( "/(\d+)/", "\\1+" . $number, $string ) . "</pre>";
?>
Avatar billede kataka Nybegynder
08. april 2007 - 21:45 #3
echo "<pre>" . preg_replace( "/(\d+)/e", "\\1+{$number}", $string ) . "</pre>";


:D
Avatar billede kataka Nybegynder
08. april 2007 - 21:48 #4
<?php
$number = 493;
$time = "00:57:26:800";

$string = <<<END
1
00:00:00,000 --> 00:00:01,300
Tilfældig tekst

2
00:00:02,700 --> 00:00:05,700
Tilfældig tekst

3
00:00:17,800 --> 00:00:19,600
Tilfældig tekst
END;


$string = preg_replace( "/(\d+)\r/e", "\\1+{$number}", $string );
echo "<pre>{$string}</pre>";
?>


Hvordan laver jeg så endnu en preg_replace, som kan ændre tiderne? Altså plusse med 57 minutter, så måden det er stillet op på stadig fungerer?
Avatar billede morhan Novice
08. april 2007 - 23:25 #5
// tidsstempel > ms
function Time2Int($time){
    $a = explode(":", $time);
    $b = explode(",", $a[2]);
    $c = 1000*(60*60*$a[0] + 60*$a[1] + $b[0]) + $b[1];
    return $c;
}

// ms > tidsstempel
function Int2Time($time){
    $h = (int)($time / (60*60*1000));
    $time -= $h*60*60*1000;

    $m = (int)($time / (60*1000));
    $time -= $m*60*1000;

    $s = (int)($time / 1000);
    $time -= $s*1000;

    $ms = $time;

    return sprintf("%02d:%02d:%02d,%03d", $h, $m, $s, $ms);
}

function Adjust($num, $beg, $end){
    $beg = Time2Int($beg);
    $end = Time2Int($end);
    $addtime = Time2Int($GLOBALS['time']);

    $beg += $addtime;
    $end += $addtime;

    $beg = Int2Time($beg);
    $end = Int2Time($end);

    $num += $GLOBALS['number'];

    return "$num\r\n"."$beg --> $end";
}

$string = preg_replace("/(\d+)\r?\n(\d+:\d+:\d+,\d+) --> (\d+:\d+:\d+,\d+)/e", "Adjust('$1','$2','$3')", $string );
echo "<pre>{$string}</pre>";
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester