[PHP] IO32 bestand uitlezen (spatie probleem)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goedenavond Tweakers,

Ik ben momenteel bezig met een applicatie dat gebruikt maakt van onder andere OI32 bestanden.
Zo'n bestand bestaat uit een x aantal regels, met altijd een lengte van 350 karakters per regel.

Een regel is opgesplitst in verschillende waarden (bijv. karakter 1 t/m 3 is nummer van klant, 3 t/m 9 is achternaam). Het bestand bestaat ook veel spaties, omdat sommige waarden niet gevuld zijn. Dit is natuurlijk mogelijk.

Ik gebruik nu file() om het bestand uit te lezen, en per regel te bekijken wat de verschillende waarden zijn.

Mijn probleem is, dat file() alle spaties uit de regel verwijderd. Dit is niet de bedoeling, de waarde is dan immers leeg.

Hoe kan ik het bestand inlezen zodat de spaties niet verwijderd worden?

Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Testje:

PHP:
1
2
3
4
5
6
7
<?php

$array = file('test.txt');

print_r($array);

?>


test.txt:

code:
1
2
3
4
lalal lalala lalala
pprrrrrrrrrrrrrrrrr
hk lfweg fewfewfwef
<regel met alleen spatie's>


output:

code:
1
2
3
4
5
6
7
8
9
10
Array
(
    [0] => lalal lalala lalala

    [1] => pprrrrrrrrrrrrrrrrr

    [2] => hk lfweg fewfewfwef

    [3] =>
)


Spatie's worden hier niet verwijderd ...

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Je hebt gelijk, de spaties worden niet verwijderd.

Maar, als er bijvoorbeeld 10 spaties achter elkaar staan, wordt deze samengevoegd tot 1 spatie.
Ik heb die 10 spaties ook nodig, omdat het dan simpelweg geen data bevat.

Acties:
  • 0 Henk 'm!

  • Peter
  • Registratie: Januari 2005
  • Laatst online: 13-09 17:10
Dat gebeurd helemaal niet, enkel als jij (l/r)trim toepast op de lijn. Geef eens wat code ofzo, hier kunnen we maar zeer weinig mee.

[ Voor 30% gewijzigd door Peter op 18-09-2009 17:43 ]


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Verwijderd schreef op vrijdag 18 september 2009 @ 17:40:
Je hebt gelijk, de spaties worden niet verwijderd.

Maar, als er bijvoorbeeld 10 spaties achter elkaar staan, wordt deze samengevoegd tot 1 spatie.
Ik heb die 10 spaties ook nodig, omdat het dan simpelweg geen data bevat.
Nope, als je met var_dump kijkt naar de lengte van de strings, zie je dat dit niet gebeurt:

code:
1
2
3
4
5
6
7
lalal lalala lalala
pprrrrrrrrrrrrrrrrr
hk lfweg fewfewfwef
                   
lalal lalala lalala
pprrrr    rrrrrrrrr
hk lfweg fewfewfwef

geeft
array
  0 => string 'lalal lalala lalala
' (length=20)
  1 => string 'pprrrrrrrrrrrrrrrrr
' (length=20)
  2 => string 'hk lfweg fewfewfwef
' (length=20)
  3 => string '                   
' (length=20)
  4 => string 'lalal lalala lalala
' (length=20)
  5 => string 'pprrrr    rrrrrrrrr
' (length=20)
  6 => string 'hk lfweg fewfewfwef' (length=19)
Dus doe je een strtrim ergens?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
edit: never mind... Dank jullie!

[ Voor 98% gewijzigd door Verwijderd op 18-09-2009 18:27 . Reden: n00b actie ]


Acties:
  • 0 Henk 'm!

  • Duroth
  • Registratie: Juni 2007
  • Laatst online: 27-04-2016

Duroth

No rest for the tweaked

Wellicht eventjes aangeven wat nu wel het probleem was? Misschien dat sommige mensen hier toch wel nieuwsgierig naar zijn, al is het alleen maar om te voorkomen dat het henzelf overkomt ;-)

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Ik gok een bug verder in de flow van de code ;)

  • HuHu
  • Registratie: Maart 2005
  • Niet online
mithras schreef op vrijdag 18 september 2009 @ 21:35:
Ik gok een bug verder in de flow van de code ;)
Ik gok dat 'ie z'n uitvoer als test naar de browser schreef en die voegt natuurlijk meerdere spaties achter elkaar samen tot één. Tenzij je de bron bekijkt, maar als je gewoon de uitvoer bekijkt niet.
Pagina: 1