hockey500 Skrevet 2. desember 2005 Del 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? Lenke til kommentar
Axentrix Skrevet 2. desember 2005 Del 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 Lenke til kommentar
PT Skrevet 2. desember 2005 Del 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 Lenke til kommentar
hockey500 Skrevet 2. desember 2005 Forfatter Del Skrevet 2. desember 2005 Takk, jeg fikk det til! 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å