Gå til innhold

string med mønster => array


Anbefalte innlegg

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 av fjellbar
Lenke til kommentar
Videoannonse
Annonse

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
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 :p

Og highlight i quote funker ikke.

Endret av M4rTiN
Lenke til kommentar
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...