hockey500 Skrevet 2. desember 2005 Skrevet 2. desember 2005 Hei, jeg har en .sub til en film, men den stemmer ikke overens med frame-raten filmen har. For de som ikke vet hvordan en slik sub fil ser ut kommer jeg med et lite utsnitt av en tilfeldig sub fil: {7096}{7160}No, I think a year|of partying is enough. {7162}{7199}She'll be going|to Harvard next fall. {7201}{7242}Mom, I haven't even|gotten in yet. {7244}{7300}Do you honestly think|Michael Dukakis will provide {7302}{7352}for this country till|you're ready to squeeze one out? det første tallet sier på hvilken frame i filmen linjen skal dukke opp, og det neste tallet sier når teksten skal forsvinne (slik jeg tolker det hvertfall). Jeg har kommet frem til at alle tallene i fila må ganges med 1,0645934 for å stemme med filmen. Du tenker kanskje at dette ikke har noe med PHP å gjøre, men jeg tenkte jeg skulle prøve å lage et script som finner alle tall i en fil, ganger dem med et oppgitt tall og lagrer fila. Hvor starter jeg?
Axentrix Skrevet 2. desember 2005 Skrevet 2. desember 2005 (endret) sånn ville jeg gjort: #legge filnavn.sub inn i array; $fil = file("filnavn.sub"); #splitte opp hver av arrayene, og legge dem inn i et flerdimensjonalt array: $tall = 0; foreach($fil as $value) { $fil_2[$tall] = explode("}",$value); $tall++; } #fjerne {, og printe ut nye verdier: foreach($fil_2 as $key => $value) { $fil_2[$key][0] = str_replace("{","",$fil_2[$key][0]); $fil_2[$key][1] = str_replace("{","",$fil_2[$key][1]); echo "{".($fil_2[$key][0] * 1.0645)."}{".($fil_2[$key][1] * 1.0645)."}".$fil_2[$key][2]."\n"; } ANER ikke om det funker, men det er ialelfall et prinsip som funker Så om du klarer å fikse så det funker helt selv, så værsågod edit: Litt annerledes: $fil = file("filnavn.sub"); $tall = 0; foreach($fil as $value) { $fil_2[$tall] = explode("}",$value); $fil_2[$tall][0] = str_replace("{","",$fil_2[$tall][0]); $fil_2[$tall][1] = str_replace("{","",$fil_2[$tall][1]); echo "{".($fil_2[$tall][0] * 1.0645)."}{".($fil_2[$tall][1] * 1.0645)."}".$fil_2[$tall][2]."\n"; $tall++; } Endret 2. desember 2005 av Axentrix
PT Skrevet 2. desember 2005 Skrevet 2. desember 2005 (endret) Tror denne skal funke: <?php $fil = 'sub.txt'; $tall = 1.0645934; $sub = file($fil); $pattern = "/^\{(\d+)\}\{(\d+)\}(.+)/i"; foreach($sub as $s) { if(preg_match($pattern, $s, $match)) { $line = '{' . (floor($match[1] * $tall)) . '}{'. (floor($match[2] * $tall)) . '}' . $match[3]; echo $line . "<br />\n"; $match = ''; } } ?> Var litt usikker på om du vil ha med alle desimalene i tallet ditt, så her er en uten: <?php $fil = 'sub.txt'; $tall = 1.0645934; $sub = file($fil); $pattern = "/^\{(\d+)\}\{(\d+)\}(.+)/i"; foreach($sub as $s) { if(preg_match($pattern, $s, $match)) { $line = '{' . ($match[1] * $tall) . '}{'. ($match[2] * $tall) . '}' . $match[3]; echo $line . "<br />\n"; $match = ''; } } ?> EDIT: Denne skal da matche alle linjer på følgende form: {*tall*}{*tall*}*teksten din* Endret 2. desember 2005 av PT
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å