fjellbar Skrevet 19. oktober 2006 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
MC2 Skrevet 19. oktober 2006 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; ?>
Martin A. Skrevet 19. oktober 2006 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
fjellbar Skrevet 20. oktober 2006 Forfatter 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..
MC2 Skrevet 20. oktober 2006 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
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å