fjellbar Skrevet 19. oktober 2006 Del Skrevet 19. oktober 2006 (endret) Hei, jeg er ganske ny i PHP og lurer på en ting. Jeg har en tekst fil med med informasjon som har dette mønsteret: a:::b:::c:::d:::e:::a:::b:::c:::d:::e:::a:::b:::c:::d:::e:::a::: osv.. Jeg vil omforme dette til: (a,b,c,d,e),(a,b,c,d,e),(a,b,c,d,e),... Jeg har løst det på denne måten og det virker: $filnavn = "konto2.txt"; $fil = fopen($filnavn, 'r'); $innhold = fread($fil, filesize($filnavn)); fclose($fil); $innhold = ereg_replace("::::::", "::: :::", $innhold); $innhold = ereg_replace(":::::::::", "::: ::: :::", $innhold); $array = explode(':::', $innhold); $entries_totalt = count($array) - 1; $start = 0; while($start < $entries_totalt) { $k_dato = trim($array[$start]); $k_type = trim($array[$start+1]); $k_navn = trim($array[$start+2]); $k_ut = trim($array[$start+3]); $k_inn = trim($array[$start+4]); $pause = ","; if($start == $entries_totalt) { $pause = ";"; } echo"(\"$k_dato\",\"$k_type\",\"$k_navn\",\"$k_ut\",\"$k_inn\")$pause<br />"; $start = $start + 5; } Problemet er at tror dette er veldig tungvindt og jeg har muligheten til å lage mønsteret i filen slik, hvordan kunne jeg løst det hvis det så slik ut?: a:::b:::c:::d:::e::;a:::b:::c:::d:::e::;a:::b:::c..... Legg merke til ::; over som indikerer slutt på rad. Er det noen tegn som egner seg bedre til å skille med? Endret 19. oktober 2006 av fjellbar Lenke til kommentar
MC2 Skrevet 19. oktober 2006 Del Skrevet 19. oktober 2006 hvis du bare vil ha det skrevet ut til sånn: (a,b,c,d,e),(a,b,c,d,e),(a,b,c,d,e),... Så er det vel ikke vanskeligere enn: PHP <?php $i = file_get_contents("fil.txt"); $i = str_replace("::;","),(",$i); $i = str_replace(":::",",", $i); $i = "(".$i.")"; echo $i; ?> Lenke til kommentar
Martin A. Skrevet 19. oktober 2006 Del Skrevet 19. oktober 2006 (endret) hvis du bare vil ha det skrevet ut til sånn: (a,b,c,d,e),(a,b,c,d,e),(a,b,c,d,e),... Så er det vel ikke vanskeligere enn: PHP <?php $i = file_get_contents("fil.txt"); $i = str_replace("::;","),(",$i); $i = str_replace(":::",",", $i); $i = "(".$i.")"; echo $i; ?> 7103709[/snapback] Sikker på at det der gir det korrekte resultatet? $i starter med å hente fila, så blir alle ::; i $i erstattet med '),(', som da er den nye verdien til $i. Og når du da skal hente ut ::: i $i, så er vel ikke de der? EDIT: Glem det, tenkte over det en gang til Og highlight i quote funker ikke. Endret 19. oktober 2006 av M4rTiN Lenke til kommentar
fjellbar Skrevet 20. oktober 2006 Forfatter Del Skrevet 20. oktober 2006 PHP <?php $i = file_get_contents("fil.txt"); $i = str_replace("::;","),(",$i); $i = str_replace(":::",",", $i); $i = "(".$i.")"; echo $i; ?> 7103709[/snapback] Funket fint det, men finnes det ikke en måte å få det i array slik på en måte:? [0] [0] a [1] b [2] c [3] d [4] e [1] [0] a [1] b [2] c [3] d [4] e [2] [0] a [1] b [2] c [3] d [4] e [3] osv.. Lenke til kommentar
MC2 Skrevet 20. oktober 2006 Del Skrevet 20. oktober 2006 PHP <?php$i = file_get_contents("fil.txt"); $i = explode("::;",$i); foreach($i as $k=>$j) { $j = explode(":::",$j); $i[$k] = $j; }; print_r($i); ?> det burde funke 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å