PDA

Bekijk Volledige Versie : voorwaarde na test string die getrimt is



Matthijs de Z
24/02/05, 16:45
Hallo

Ik lees een file regel voor regel uit, maar wil een loop stoppen wanneer de
regel geen informatie meer bevat.

(stukje code)
$koersen = fgets($fp,128);
$regeldata = explode(",",$koersen);

if($regelnr >= 12 and trim($regeldata)!="")
{
hier de opdracht
}

Maar de and trim($regeldata)!="" voorwaarde lijkt genegeerd te worden, want
de opdracht wordt wel uitgevoerd. Ook met && ip.v. and.
Wat doe ik fout?
Groeten,

Matthijs

Rene Pijlman
24/02/05, 16:55
Matthijs de Z:
>Ik lees een file regel voor regel uit, maar wil een loop stoppen wanneer de
>regel geen informatie meer bevat.

Wij zien geen loop. Een loop is iets met while, until of for.

> if($regelnr >= 12 and trim($regeldata)!="")
> {
> hier de opdracht
> }
>
>Maar de and trim($regeldata)!="" voorwaarde lijkt genegeerd te worden, want
>de opdracht wordt wel uitgevoerd. Ook met && ip.v. and.

Je hebt nog geen informatie verstrekt waaruit blijkt dat de voorwaarde
genegeerd wordt. Waarschijnlijk evalueert de expressie gewoon naar true.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Matthijs de Z
24/02/05, 17:15
> Je hebt nog geen informatie verstrekt waaruit blijkt dat de voorwaarde
> genegeerd wordt. Waarschijnlijk evalueert de expressie gewoon naar true.

misschien idd iets te weinig code doorgegeven. De loop (while) stond op een
iets hoger niveau.
maar ik heb al een vermoeden. Halat trim($var) ook een \n weg uit een regel?
Als dat niet zo is, dan is trim($regeldata)!="" nooit waar, omdat \n er
immers instaat en $regeldata dus een vulling heeft. Als mijn vermoeden
correct is, hoe haal ik dan tekens als \n en \r weg?
Groeten,

Matthijs

>
> --
> René Pijlman
>
> Wat wil jij leren? http://www.leren.nl

Matthijs de Z
24/02/05, 17:15
> Als dat niet zo is, dan is trim($regeldata)!="" nooit waar,

ik bedoel natuurlijk...altijd waar

Matthijs de Z
24/02/05, 17:15
> maar ik heb al een vermoeden. Halat trim($var) ook een \n weg uit een
regel?

Antwoord: Ja

Immers:
"
Zonder het tweede parameter zal trim() de volgende tekens verwijderen:


" " (ASCII 32 (0x20)), een normale spatie.

"\t" (ASCII 9 (0x09)), een tab.

"\n" (ASCII 10 (0x0A)), een new line (line feed).

"\r" (ASCII 13 (0x0D)), een carriage return.

"\0" (ASCII 0 (0x00)), een NUL-byte.

"\x0B" (ASCII 11 (0x0B)), een verticale tab.
"



> Als dat niet zo is, dan is trim($regeldata)!="" nooit waar, omdat \n er
> immers instaat en $regeldata dus een vulling heeft. Als mijn vermoeden
> correct is, hoe haal ik dan tekens als \n en \r weg?
> Groeten,
>
> Matthijs
>
> >
> > --
> > René Pijlman
> >
> > Wat wil jij leren? http://www.leren.nl
>
>

Matthijs de Z
24/02/05, 17:25
> Je hebt nog geen informatie verstrekt waaruit blijkt dat de voorwaarde
> genegeerd wordt. Waarschijnlijk evalueert de expressie gewoon naar true.

Dit is een deel van de code:

<?php

$fp = fsockopen ("finance.yahoo.com", 80, $errno, $errstr);
if (!$fp)
{
echo "$errstr ($errno)<br>\n";
}
else
{
echo"gelukt<br>";

fputs ($fp, "GET
/d/quotes.csv?s=^AEX+AAH.AS+AEGN.AS+AHLN.AS+AKZO.AS+A SML.AS+BUHR.AS+VERS.AS+
DSMN.AS+ELSN.AS+FOR.AS+GVKN.AS+GCCI.AS+HEIN.AS+HAG N.AS+ING.AS+KPN.AS+VDMN.AS
+NUMCc.AS+PHG.AS+RD.AS+TP.AS+UNc.AS+VNUN.AS+WLSNc. AS+IHCN.AS&f=sl1d1t1c1ohgv
&e=.csv HTTP/1.0\r\n");
fputs ($fp, "Host: finance.yahoo.com\r\n\r\n");
while (!feof($fp))
{
$regelnr += 1;
$koersen = fgets($fp,128);
$regeldata = explode(",",$koersen);
if($regelnr >= 12 and trim($regeldata)!="")
{
//hier de opdracht
}

}
}

fclose ($fp);


?>

Rene Pijlman
24/02/05, 17:45
Matthijs de Z:
>Dit is een deel van de code:

Ik kan het verhaal niet meer volgen.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Daniel Tryba
24/02/05, 18:15
Matthijs de Z <haalallesvoorhetstreepjeplushetstreepjezelfweg-mldz@hotmail.com> wrote:
> while (!feof($fp))
> {
> $regelnr += 1;
> $koersen = fgets($fp,128);
> $regeldata = explode(",",$koersen);
> if($regelnr >= 12 and trim($regeldata)!="")
> {
> //hier de opdracht
> }

Wat is $regeldata en wat doet trim!

BTW ontwikkel met E_ALL en je had je fout allang gezien.

Jaap-Andre de Hoop
24/02/05, 20:35
> $regeldata = explode(",",$koersen);

kijk maar eens wat een explode oplevert.

> if($regelnr >= 12 and trim($regeldata)!="")

en een trim nodig heeft

Jaap-Andre.

Matthijs de Z
24/02/05, 22:25
> > while (!feof($fp))
> > {
> > $regelnr += 1;
> > $koersen = fgets($fp,128);
> > $regeldata = explode(",",$koersen);
> > if($regelnr >= 12 and trim($regeldata)!="")
> > {
> > //hier de opdracht
> > }
>
> Wat is $regeldata

een array....

>en wat doet trim!

Haalt de withspaces weg....maar natuurlijk niet bij een array... ;-(

> BTW ontwikkel met E_ALL en je had je fout allang gezien.

mewa? E_All? is dat een instelling of een programma?

Bij de weg, mijn windhoos 98 machintje viel helaas niet compleet plat, na
het toevoegen van een wireless kaartje, du sik kan het nu niet testen. Maar
ik neem aan dat mijn antwoorden correct waren?
Groeten,

Matthijs

Matthijs de Z
24/02/05, 22:25
> > $regeldata = explode(",",$koersen);
>
> kijk maar eens wat een explode oplevert.
>
> > if($regelnr >= 12 and trim($regeldata)!="")
>
> en een trim nodig heeft

een string...en geen array. Dat was het hè?
Mazzel,

Matthijs

>
> Jaap-Andre.

Maarten Wierda
24/02/05, 23:05
Matthijs de Z wrote:

>> BTW ontwikkel met E_ALL en je had je fout allang
>> gezien.
>
> mewa? E_All? is dat een instelling of een programma?

<http://nl2.php.net/manual/en/function.error-reporting.php>


--
Cheers,
Maarten Wierda

"After MELVINS finished a 23-minute opener of
'Charmicarmicat', one knob yelled
'Your guitar's tuned now!',
to which Buzz snapped,
'SHUT UP, FAG!!!'... "

Matthijs de Z
24/02/05, 23:15
> >> BTW ontwikkel met E_ALL en je had je fout allang
> >> gezien.
> >
> > mewa? E_All? is dat een instelling of een programma?
>
> <http://nl2.php.net/manual/en/function.error-reporting.php>

Weer iets geleerd vandaag ;-)