[PHP] file splitten

Pagina: 1
Acties:

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
ik heb een text bestand dat wanneer ik het met wordpad open, netjes in regels is.
Als ik het met notepad open echter niet.

Nou wil ik elke regel om zo de collommen te kunnen splitsen per regel.
Elke regel is verdeeld in 4 collommen, gescheiden door |

Voorbeeld:

1|henk|arnhem|23423|
2|piet|amsterdam|6323|

In notepad staat het dus allemaal achter elkaar, zonder enters.
Ik heb nou al van alles geprobeerd, maar ik kan die regels maar niet splitsen :?

ik open de file dus met
PHP:
1
<?$file = "1144.txt";$line = file("$file");?>

en dan bijv.
PHP:
1
<?$bestand = split("\n", $line);?>

of

en dan bijv.
PHP:
1
<?$bestand = split("_\n_", $line);?>

of zelfs
PHP:
1
<?$bestand = preg_replace("\n", "<BR>", $line);$bestand = split("<BR>",$bestand);?>

maar niks werkt |:(
Zit er dan soms toch geen enter oid?

Iemand? :?

-edit, zowel fopen als file werkt niet :?

Leef lekker in het nu, er is niks anders


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:13
En met fread :?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:39
Even los van de overige rariteiten: fgets leest al een regel in. Het is dus niet zo zinnig om vervolgens nog te splitten, want je WEET dat er na je newline character niets meer komt. Als je van die newline character afwilt, kun je 'm wel chop'en.

Waar gaat 't fout trouwens? Wat zijn de tussenresultaten?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:13
Oplossing is dus fread ipv fgets...

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
tot nu toe nog niks eigenlijk... ik lees de file in, en dan krijg ik hem dus als 1 grote string of in een array als ik het met fgets doe.

ben nu ff met fread aan het klooien

Leef lekker in het nu, er is niks anders


  • Lurge
  • Registratie: Maart 2000
  • Niet online

Lurge

ActueleWind

probeer anders eens:
PHP:
1
<?print_r($line); // Dit print de variabele $line?>

Het file commando maakt een array met elke line als een string dus line 1 is $line[0]; en line 2 is $line[1] enzovoorts.
Ik hoop dat dit wat helpt.

ActueleWind


  • flat
  • Registratie: Mei 2000
  • Niet online
maar wil je de hele handel dan niet netjes in een array hebben?

"Happiness is a way of travel, not a destination."
--Roy Goodman


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
ik heb nu
PHP:
1
<?$file = "1144.txt";$fd = fopen($file, "r");$line = fgets($fd, 4096);fclose($fd);$lines = split("\n",$lines);$temp[0] = 1;$i=0;while($temp[0] != (NULL)){    $temp = split("\|",$lines[$i]);    $cell1[$i] = $temp[0];    $cell2[$i] = $temp[1];    $cell3[$i] = $temp[2];    $cell4[$i] = $temp[3];    $i++;}?>

het rare is nu, dat ie het tot 4 keer doet, waarbij de 4e het einde is van de 1e regel PLUS de eerste kollom van rij2
en dan houd ie er weer mee op

urgh...

het is idd de bedoeling dat ik alles in een array kan krijgen;

kollum 1 tm 4, waarbij de array de regel moet zijn.

met fread lees ik het text bestand trouwens "goed" in, in de broncode staan wel enters(/n), maar hij kan er niet op splitsen :?

Leef lekker in het nu, er is niks anders


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:13
FireFoz:
met fread lees ik het text bestand trouwens "goed" in, in de broncode staan wel enters(/n), maar hij kan er niet op splitsen :?
Lijkt me sterk. Ten eerste is het al \n en ten tweede kun je tussen verschillende soorten quotes proberen (" en ') omdat \n 1 karakter is.

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
Op dinsdag 14 mei 2002 16:03 schreef ddc het volgende:

[..]

Lijkt me sterk. Ten eerste is het al \n en ten tweede kun je tussen verschillende soorten quotes proberen (" en ') omdat \n 1 karakter is.
Bij
PHP:
1
<?$line = split('\n',$line);?>

split ie gewoon op n's hoor :?


wat een kut zooi, zo moeilijk kan dit toch niet zijn?

Leef lekker in het nu, er is niks anders


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:13
En \\n :?

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
dan split ie ook op n

volgensmij is het splitten wel goed.. ik heb namelijk net 2 scripts gevonden waarbij ze ook met \n splitten;

http://morannon.the-infinite.org/archive/php/word_wrap
http://www.evilwalrus.com/viewcode.php?codeEx=500

dus dat zal we goed zijn dan zo. dan is het toch het inlezen :?

Leef lekker in het nu, er is niks anders


  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-09 17:11

GraasGast

Analogue Heaven

ultraedit, search&replace?

Verwijderd

fgets haalt maar 1 regel op (tot een \n, een EOF, of de limit van in jouw geval 4096 bytes).

En je gebruikt hier $line, en daar weer $lines, da's niet echt duidelijk zeg maar.

Haal je bestand anders eens op met:
$text = join("", file("file.txt"));

En dan kun je lekker splitten op \n en | enzo...

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
Op dinsdag 14 mei 2002 16:31 schreef Cheatah het volgende:
fgets haalt maar 1 regel op (tot een \n, een EOF, of de limit van in jouw geval 4096 bytes).

En je gebruikt hier $line, en daar weer $lines, da's niet echt duidelijk zeg maar.

Haal je bestand anders eens op met:
$text = join("", file("file.txt"));

En dan kun je lekker splitten op \n en | enzo...
Ook dan komt ie niet verder dan de 4e, en neemt ie er daar 2 :?

PFff... ik word hier echt helemaal gaar van .. kan het wel merken dat ik maar 3 uur heb geslapen vanacht :D

Leef lekker in het nu, er is niks anders


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

:{
code:
1
2
3
4
5
6
$lines = file ( '1144.txt' );
$cells = array ();
foreach ( $lines as $line )
   $cells [] = explode ( '|', $line );

print_r ( $cells )

hth :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
Op dinsdag 14 mei 2002 17:17 schreef drm het volgende:
:{
code:
1
2
3
4
5
6
$lines = file ( '1144.txt' );
$cells = array ();
foreach ( $lines as $line )
   $cells [] = explode ( '|', $line );

print_r ( $cells )

hth :)
Wehehe, jah ik heb zo veel zitten veranderen, copy/pasten enzo dus soms klopt het niet helemaal :D

Anyway, ik heb het nu omet een alternatief opgelost :)

Leef lekker in het nu, er is niks anders


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

FireFoz:
Anyway, ik heb het nu omet een alternatief opgelost :)
POSTEN!! ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1