Springen naar inhoud


- - - - -

Fgets Leest Niet Altijd Eerste Lijn Correct


  • Log in a.u.b. om te beantwoorden
Er zijn 4 reacties in dit onderwerp

#1 guest_BESLO_*

guest_BESLO_*
  • Gasten
    Laatst bezocht

Geplaatst op 31 juli 2014 - 15:42

Ik gebruik op een van mijn websites "data bestanden" om de inhoud dynamisch te kunnen sturen.

Deze bestanden zijn steeds in notepad of notepad++ aangemaakt. Omdat er ook accenten in de teksten kunnen voorkomen bewaar ik alles ALTIJD in UTF8 formaat.

Nu heb ik gemerkt dat, wanneer ik mijn bestand open (gelijk of dat ik foopen en daarna fgets OF file), regelmatig wordt de eerste lijn in het bestand niet of slechts gedeeltelijk ingelezen (soms lijkt het of alles na het eerste karakter weggeveegd wordt).

Vreemd is dat niet alle bestanden (met gelijkaardige informatie) dit fenomeen vertonen?!?!

Ik los dit nu op door telkens een legen lijn vooraan mijn bestand te zetten, maar dat is niet echt een propere manier.

Iemand enig idee op welke wijze ik ALTIJD vanaf de eerste lijn alles kan in lezen?
Andere functie dan fgets of een aangepaste functie?

#2 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 30 jan 2017 23:38

Geplaatst op 01 augustus 2014 - 11:45

Vreemd, zou je het stukje code kunnen tonen wat je gebruikt? Wellicht met een voorbeeld databestand waar het fout gaat?

#3 guest_BESLO_*

guest_BESLO_*
  • Gasten
    Laatst bezocht

Geplaatst op 23 augustus 2014 - 10:51

Bericht bekijkenjosk79, op 01 augustus 2014 - 11:45, zei:

Vreemd, zou je het stukje code kunnen tonen wat je gebruikt? Wellicht met een voorbeeld databestand waar het fout gaat?

Hier de code die ik gebruik:

Code:
			 $FileHandle = fopen($PathPadding . "Data/Titles/" . $FileName,"r");

			 while(!feof($FileHandle)){
			 $Text = fgets($FileHandle);
			 switch(substr($Text, 0,4)){
				 case "Titl": // Title of book


Deel van zo een data bestand.

Code:
Title:Voor niks gaat de zon op
Author:Jef Jansens


De bedoeling is dat het switch commando ervoor instaat dat de juiste CSS opmaak toegepast wordt. Soms echter blijkt dat de eerste lijn NIET geëvalueerd wordt tenzij. Plaats ik echter een lege lijn bovenaan, dan is alles wel in orde (ZONDER dat ik de origineel niet geëvalueerde lijn aangepast heb!).

Heb ondertussen het vermoeden dat het probleem niet bij PHP ligt maar bij de manier waarop notepad (kladblok) de databestanden soms wegschrijft. Ik heb het probleem minder wanneer ik notepad++ gebruik. Ik bewaar de bestanden in utf-8 formaat om er zeker van te zijn dat de accenten steeds juist getoond worden op de webpagina.

#4 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 30 jan 2017 23:38

Geplaatst op 23 augustus 2014 - 11:32

Controleer eens in Notepad++ of je het bestand wegschrijft zonder BOM.

Wat krijg je als je de eerste volledige regel probeer te printf-en in zo'n bestand waar het fout gaat, dus nog voor switch{} ?

#5 guest_BESLO_*

guest_BESLO_*
  • Gasten
    Laatst bezocht

Geplaatst op 26 augustus 2014 - 15:00

Bericht bekijkenjosk79, op 23 augustus 2014 - 11:32, zei:

Controleer eens in Notepad++ of je het bestand wegschrijft zonder BOM.

Probleem opgelost!

Lag inderdaad aan de BOM die bij sommige van mijn bestanden blijkbaar mee bewaard werd!




0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)