Gå til innhold

Hva er PHP-kode for linjeskift? -LØST!


Anbefalte innlegg

Ja, som topic sier... Følgende kode på en side som logger ip med dato:

 

fputs($fp1,nl2br($_SERVER['REMOTE_ADDR']). ' - ' . date('Y-m-d') . ' ' . date('H:i:s'). ' ### ');

 

I ip-logg.txt blir det bare lagret en lang tekst-linje. Hva skriver jeg for å få til linjeskift mellom inleggene?

 

Og hva skriver jeg for at det siste innlegget lagres først?

 

Edit: Nå skriver jeg ' ### ' (til slutt) for enklere å se hvor de forskjellige er.

 

Edit 2: Løsning:

 

fputs($fp1,nl2br($_SERVER['REMOTE_ADDR']). ' - ' . date('Y-m-d') . ' ' . date('H:i:s'). "\n" );

Endret av Knutgrus
Lenke til kommentar
Videoannonse
Annonse

fputs($fp1,nl2br($_SERVER['REMOTE_ADDR']). ' - ' . date('Y-m-d') . ' ' . date('H:i:s'). ' ### ' <br>\n);

 

Hvis du nå putter filendelsen på fila den skriver til, til .html, så vil den gå i quirks mode, og du vil få linjeskift når den rendrer :)

 

edit: Skal ikke garantere at det fungerer, for jeg er ganske ny i gamet selv

Endret av clvn
Lenke til kommentar

Prøv denne:

fputs($fp1,$_SERVER['REMOTE_ADDR']. " - " . date('Y-m-d') . " " . date('H:i:s'). " ### \n");

Trenger ikke <br> i tekstfila... Bruk nl2br for å vise linjeskift i html når teksten skal skrives ut.

f.eks. hvis filen heter ip.log

$file = file_get_contents("ip.log");
print nl2br($file);

Dette skal skrive ut tekstfilen slik den ser ut når du åpner den i en editor.

 

EDIT: Må vel kanskje bruke " (Dobbel quotes). Les mer her

Endret av kakkle
Lenke til kommentar
Bruk "\r\n", du... Er ikke helt sikker men jeg tror det er sånn:

Unix: \n

Windows: \r

Mac: \r\n

5038604[/snapback]

 

Nå blander du vel litt?

Unix/Linux etc: /n

Mac: /r

Windows: /r/n

 

Men bare hold deg til /n du. Det er det vanligste, og fungerer på de fleste systemer (også Windows).

 

For de som er interessert i å krangle (det er det alltid) så kan de ta en titt på dette, hentet fra php.net:

Different operating system families have different line-ending conventions. When you write a text file and want to insert a line break, you need to use the correct line-ending character(s) for your operating system. Unix based systems use \n as the line ending character, Windows based systems use \r\n  as the line ending characters and Macintosh based systems use \r as the line ending character.

 

Hentet herfra.

Lenke til kommentar
Bruk "\r\n", du... Er ikke helt sikker men jeg tror det er sånn:

Unix: \n

Windows: \r

Mac: \r\n

5038604[/snapback]

 

Nå blander du vel litt?

Unix/Linux etc: /n

Mac: /r

Windows: /r/n

 

Men bare hold deg til /n du. Det er det vanligste, og fungerer på de fleste systemer (også Windows).

 

For de som er interessert i å krangle (det er det alltid) så kan de ta en titt på dette, hentet fra php.net:

Different operating system families have different line-ending conventions. When you write a text file and want to insert a line break, you need to use the correct line-ending character(s) for your operating system. Unix based systems use \n as the line ending character, Windows based systems use \r\n  as the line ending characters and Macintosh based systems use \r as the line ending character.

 

Hentet herfra.

5042212[/snapback]

 

Nesten, muffe. :)

 

*nix-baserte OS bruker \n

mac os x bruker også \n, siden det er basert på darwin

mac os x 9 og tidligere bruker \r

og windows bruker \r\n

 

Og det skal forresten være backslash (\), og ikke vanlig slash (/) når man bruker escape-tegn. :)

 

Støtte nemlig på dette for noen uker siden, når jeg skulle splitte en stor fil med mange sql-spørringer i forskjellige spørringer, og fant ut at windows og linux ikke delte linjene likt. OS X delte linjene på samme måte som min Ubuntu-server.

 

Litt irriterende at det ikke er mulig å komme frem til en grei standard for noe sånt, og også at det ikke finnes en standardfunksjon i PHP som automatisk oversetter \r\n til f.eks. \n, men det vil jo gå utover funksjonen til \r i *nix-systemer. Ser ut til at vi er dømt til å måtte legge inn de ekstra linjene for å oversette mellom \r, \r\n og \n... :(

Endret av jorgis
Lenke til kommentar
Og det skal forresten være backslash (\), og ikke vanlig slash (/) når man bruker escape-tegn. :)

5046180[/snapback]

 

Det visste jeg vel egentlig *filleriste meg selv*.

 

Et lite spørsmål: Er det noen grunn til å bruke noe annet enn \n når en lager dynamiske websider (linjeskift i HTML)?

Lenke til kommentar
Litt irriterende at det ikke er mulig å komme frem til en grei standard for noe sånt, og også at det ikke finnes en standardfunksjon i PHP som automatisk oversetter \r\n til f.eks

fopen med t-flagget som andre parameter sørger for dette

 

 

Et lite spørsmål: Er det noen grunn til å bruke noe annet enn \n når en lager dynamiske websider (linjeskift i HTML)?

5062380[/snapback]

For firefox og opera er det likegyldig om du bruker \n eller \r\n, det vises som linjeskift uansett.

Lenke til kommentar
Litt irriterende at det ikke er mulig å komme frem til en grei standard for noe sånt, og også at det ikke finnes en standardfunksjon i PHP som automatisk oversetter \r\n til f.eks

fopen med t-flagget som andre parameter sørger for dette

 

fopen er unødvendig og ikke anbefalt å bruke når man bare skal lese en fil inn i en streng, derfor bruker jeg file_get_contents(). At det i tillegg er raskere er bare en fordel. :)

Lenke til kommentar

Hehe, skjønte jeg ikke at det kom en som ville kverulere? Bruker du fopen med t-flagget, vil php se alle typer newlines likt, og jeg svarte jo bare på spørsmålet ditt.

Du sier «anbefalt», da vil jeg gjerne vite av hvem- for file_get_contents er på ingen måte så mye raskere at det vil utgjøre noen forskjell.

 

Prøv å kjør to for loop-er 100000 gang med henholdsvis file_get_contents og fopen,fread og fclose. Ta så tida med microtime(), og du vil se at det ikke er store forskjellen :)

Endret av dabear
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...