ik heb een tekstbestand met op elke regel een zin die ik wil gaan opsplitsen hij stopt echter na 1regel..

fruit.txt voorbeeld

fruit,banaan,2euro
fruit,appel,3euro
fruit,citroen,4euro

de php code die ik gebruik om uit te lezen en aan te passen

<?php

$fStream = fopen("fruit.txt","r") or trigger_error("Kon bestand niet openen",E_USER_ERROR);

// loopen door de lees lus
while(!feof($fStream))
{
// bestand daadwerkelijk lezen
$fContent = fread($fStream,4096) or trigger_error("Kon niet uit het bestand lezen",E_USER_ERROR);

$fParsed = explode(",",$fContent);
echo $fParsed[0] . '-' . $fParsed[1] . '-' . $fParsed[2] . '!';


}

// bestand weer sluiten
fclose($fStream);
?>

wat doe ik verkeerd?
dat helpt niet
Oeps verkeerd gelezen,
Je opent het hele bestand, dus zal de volgende regel worden:
echo $fParsed[3] . '-' . $fParsed[4] . '-' . $fParsed[5] . '!';

Wat je zou kunnen doen, na iedere newline (\n) opnieuw exploden
ipv. die andere whileloop
<?
while(preg_match('\\n$')) { // volgens mij of ipv $, ^
explode(wat je had);
echo wat je had;
}
?>
zorg wel dat je fread boven de whileloop zet.
EOL (End of Line) is volgens mij een standaard define. Moet je ff nazoeken op php.net. Anders kan je die in je while stoppen.
moet ik dan niet ook meegeven in de pregmatch welke variabele het betreft? ik heb nu dit maar dat werkt niet.

<?php

$fStream = fopen("fruit.txt","r") or trigger_error("Kon bestand niet openen",E_USER_ERROR);

// loopen door de lees lus
while(preg_match('\\n^',$fStream))
{
// bestand daadwerkelijk lezen
$fContent = fread($fStream,4096) or trigger_error("Kon niet uit het bestand lezen",E_USER_ERROR);

$fParsed = explode(",",$fContent);
echo $fParsed[0] . '-' . $fParsed[1] . '!';


}

// bestand weer sluiten
fclose($fStream);
?>
Madelief, voordat je met die preg_match() aan de gang kan, zal je eerst wel fread() moeten hebben gedaan. Je wilt namelijk in het bestand gaan matchen, dan moet je al hebben gelezen.
Probeer dit eens:

<?php

$fStream = fopen("fruit.txt","r") or trigger_error("Kon bestand niet openen",E_USER_ERROR);
// bestand daadwerkelijk lezen
$fContent = fread($fStream,4096) or trigger_error("Kon niet uit het bestand lezen",E_USER_ERROR);
// loopen door de lees lus
while($fLines = preg_match('\\n^',$fStream))
{

$fParsed = explode(",",$fLines);
echo $fParsed[0] . '-' . $fParsed[1] . '!';


}

// bestand weer sluiten
fclose($fStream);
?>

EDIT:

Ook nog welkom trouwens.. je zit hier net een paar dagen zie ik.. (niet netjes anders, de een wel welkom heten en de ander niet, dus bij deze)
Hoop dat je er veel aan hebt.
beste deze oplossing doet het ook niet.. moet fStream in de pregmatch ook niet fContent zijn? Ook geprobeerd maar doet ook niets.

Dit dan?

<?php

$fStream = fopen("fruit.txt","r") or trigger_error("Kon bestand niet openen",E_USER_ERROR);
// bestand daadwerkelijk lezen
$fContent = fread($fStream,4096) or trigger_error("Kon niet uit het bestand lezen",E_USER_ERROR);
// Bestand lijn voor lijn in array zetten
$fLines = explode("\n",$fContent)

// regel voor regel uit elkaar trekken.
foreach($fLines as $fRules)
{

$fParsed = explode(",",$fRules);
echo $fParsed[0] . '-' . $fParsed[1] . '!';


}

// bestand weer sluiten
fclose($fStream);
?>
ook niet...

kan er ook nog iets anders aan de hand zijn?
Deze werkt, zat een klein foutje in:

<?php

$fStream = fopen("fruit.txt","r") or trigger_error("Kon bestand niet openen",E_USER_ERROR);
// bestand daadwerkelijk lezen
$fContent = fread($fStream,4096) or trigger_error("Kon niet uit het bestand lezen",E_USER_ERROR);
// Bestand lijn voor lijn in array zetten
$fLines = explode("\n",$fContent);

// regel voor regel uit elkaar trekken.
foreach($fLines as $fRules)
{

$fParsed = explode(",",$fRules);
echo $fParsed[0] . '-' . $fParsed[1] . '!<br>';


}

// bestand weer sluiten
fclose($fStream);
?>
ja!

dank je wel!

Reageren