/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Linieskift med fwrite
Fra : Joe


Dato : 08-04-03 21:19

Hvordan fremtvinger man et linieskift når man skriver til en fil?

$tok = strtok($contents," \n");
while ($tok)
{
if(preg_match("/127.0.0.1/",$tok))
{
fwrite($file_handle,$tok."\n"); //jeg går ud fra det er her
det går galt
}
$tok = strtok("\n");
}

Som det er ud nu kommer det hele bare ud i et lang kører.

Nogle ideer? Jeg synes ikke http://www.php.net/manual/en/function.fwrite.php
er særlig hjælpsom lige på det punkt....men jeg kikker måske det forkerte
sted??




 
 
Jonas Koch Bentzen (09-04-2003)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 09-04-03 10:08

Joe wrote:
> Hvordan fremtvinger man et linieskift når man skriver til en fil?

Sådan som du har gjort det.

> if(preg_match("/127.0.0.1/",$tok))

Den hurtigste og letteste måde at afgøre, om en streng findes i en anden
streng, er strpos(). Brug kun preg_match(), hvis du decideret har brug
for regulære udtryk.

Dit regulære udtryk vil så vidt jeg kan se i øvrigt passe på f.eks.
"127a0b0c1", for punktum betyder et vilkårligt tegn. Det problem undgås
ved at bruge en funktion, der slet ikke bruger regulære udtryk - f.eks.
strpos().

> Som det er ud nu kommer det hele bare ud i et lang kører.

Sandsynligvis fordi du udskriver det i browseren, hvor \n ikke vises som
linjeskift. Kør nl2br() på filens indhold, når du udskriver det i browseren.


Joe (09-04-2003)
Kommentar
Fra : Joe


Dato : 09-04-03 21:56

Jeg skriver indholdet til en .txt fil. og åbner denne i notepad, og her
kommer det hele i en lang kører.
Har du andre ideer til hvad der kan være årsagen?

Angående brugen af preg_match... her er tale om en test konstruktion....jeg
regner med at gøre dem lidt mere avancerede med tiden.... men rart at vide
med strpos() den kan sagtens vise sig nyttig i andre situationer.


"Jonas Koch Bentzen" <ingen.email@eksempel.dk> wrote in message
news:b70ntr$snl$1@sunsite.dk...
> Joe wrote:
> > Hvordan fremtvinger man et linieskift når man skriver til en fil?
>
> Sådan som du har gjort det.
>
> > if(preg_match("/127.0.0.1/",$tok))
>
> Den hurtigste og letteste måde at afgøre, om en streng findes i en anden
> streng, er strpos(). Brug kun preg_match(), hvis du decideret har brug
> for regulære udtryk.
>
> Dit regulære udtryk vil så vidt jeg kan se i øvrigt passe på f.eks.
> "127a0b0c1", for punktum betyder et vilkårligt tegn. Det problem undgås
> ved at bruge en funktion, der slet ikke bruger regulære udtryk - f.eks.
> strpos().
>
> > Som det er ud nu kommer det hele bare ud i et lang kører.
>
> Sandsynligvis fordi du udskriver det i browseren, hvor \n ikke vises som
> linjeskift. Kør nl2br() på filens indhold, når du udskriver det i
browseren.
>



Jonas Koch Bentzen (10-04-2003)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 10-04-03 10:17

Joe wrote:
>
> Jeg skriver indholdet til en .txt fil. og åbner denne i notepad, og her
> kommer det hele i en lang kører.
> Har du andre ideer til hvad der kan være årsagen?

På Linux/Unix behøver man kun "\n" for at lave et linjeskift. På Windows
skal der "\r" foran.

Altså:

fwrite($fp, "$linje\r\n");


Kristian Risager Lar~ (10-04-2003)
Kommentar
Fra : Kristian Risager Lar~


Dato : 10-04-03 00:52

> Dit regulære udtryk vil så vidt jeg kan se i øvrigt passe på f.eks.
> "127a0b0c1", for punktum betyder et vilkårligt tegn. Det problem undgås
> ved at bruge en funktion, der slet ikke bruger regulære udtryk - f.eks.
> strpos().


Eller med "\.", altså ved at escape punktum.
Men du har ret: Brug strpos().

--
Kristian Risager Larsen, Californien, USA - http://kezze.dk




Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste