Gå til innhold

Konvertere linjeskift til <br>


Anbefalte innlegg

Videoannonse
Annonse
Gjest Slettet+1374861
Om du bruker HTML:

 

<?php
function nlbr($str){
	return str_replace("\n", "<br>", $str);
}
?>

 

Ble usikker på hvordan det der er jeg BigJackW.... Du vet at det der funker cross-OS? Er jo veldig varierende hvordan linjeskift blir håndtert i enkelte sammenhenger, iforhold til \r\n, \n\r, \r eller \n (vanligste er vel \r\n og \n). Skulle jeg laget en tilsvarende selv så hadde jeg nok automatisk tatt høyde for alle fire variantene, men mener du det der er nok?

Lenke til kommentar
Ble usikker på hvordan det der er jeg BigJackW.... Du vet at det der funker cross-OS? Er jo veldig varierende hvordan linjeskift blir håndtert i enkelte sammenhenger, iforhold til \r\n, \n\r, \r eller \n (vanligste er vel \r\n og \n). Skulle jeg laget en tilsvarende selv så hadde jeg nok automatisk tatt høyde for alle fire variantene, men mener du det der er nok?

Funker neppe, nei. Mener å huske at windows, unix og mac sender alle forskjellige linjeskift, men løsningen er veldig enkel i PHP. str_replace() støtter blant annet arrays i search-parameteret.

 

function nltobr($var, $xhtml = FALSE){
if($var){
	if($xhtml == FALSE){
		$array = array("\r\n", "\n\r", "\n", "\r");
		$var = str_replace($array, "<br>", $var);
		return $var;
	}
	else{
		$array = array("\r\n", "\n\r", "\n", "\r");
		$var = str_replace($array, "<br />", $var);
		return $var;
	}
}
else{
	return FALSE;
}
}

http://no2.php.net/manual/en/function.nl2br.php#80984

Lenke til kommentar
Gjest Slettet+1374861
* LF: Multics, Unix and Unix-like systems (GNU/Linux, AIX, Xenix, Mac OS X, etc.), BeOS, Amiga, RISC OS, and others

* CR+LF: DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows

* CR: Commodore machines, Apple II family and Mac OS up to version 9

 

... der LF står for line feed og CR for carriage return.

Endret av Slettet+1374861
Lenke til kommentar
Ironisk nok ingen som bruker LF+CR :D

Ville jo vært direkte ulogisk om noen gjorde det også. Utgangspunktet er skrivemaskiner, og de gjennomfører alltid «carriage return» før linjeskift (derav \r\n). Det finnes forøvrig en 4. metode, NEL eller next line med ASCI-kode 21 (eller 15hex), men den er rimelig utdatert sammen med \r.

 

Jo, og en ting til. Såvidt jeg veit er \r alene ikke lovlig linjeskift i HTTP, og \r\n samt \n er de eneste former for linjeskift man skal treffe på. \r\n er forøvrig den foretrukne metoden, og man er ikke nødt til å regne \n alene som linjeskift. Gjelder vel også andre protokoller (FTP, SMTP ...) kan jeg tenke meg.

Endret av Ernie
Lenke til kommentar
Gjest Slettet+1374861
Hadde det ikke vaert like greitt a brukt str_replace( '<br />', '<br>', nl2br( $text ) )

sa blir \r\n eller \n eller noe annet gjort om til <br /> av nl2br som virker.

 

Ser jo veldig ryddig ut forsåvidt, men på en måte så ender man vel da opp med å først se etter "\r\n" og "\n", rette opp de, for så å rette opp det du faktisk allerede da skulle ha fikset. Tipper det er mindre effektivt enn å gå rett på roten til ondskapen (øhh...) og fikse alle "\r\n" og "\n" rett til "<br>"... Mindre ryddig men da får man vel lage seg en metode istedenfor :)

Lenke til kommentar
Gjest Slettet+1374861
Men da ma du vel sjekke gjennom teksten 3 ganger selv, eller det er vel det nl2br gjor det ogsa. Men PHP er jo treigt, sa jeg vet ikke.

 

Hehe, du har vel litt rett... Er vel muligens ett generellt problem med weakly typed språk... Vertfall hvis man går rett på ett, at man får ikke inntrykk av hva som ligger bak og hvordan det kan gjøre at ting går seinere...

Lenke til kommentar
Jeg har en <form>, og i formen har jeg et text-area. Jeg vil at et linjeskift i text-area'en skal konverteres til en <br>. Noen som vet om dette kan gjøres?

 

Jeg håper at du har en plan for hvordan du skal vise teksten for sluttbruker igjen.

 

Du har ikke lov til å benytte så mye som en tag i ett textarea, så hvis du skal vise teksten du nå får i ett textarea, må du fjerne <br> og erstatte det med \n, samt at du må sikre at alle elementer blir omskrevet til tekst.

 

http://www.w3.org/TR/html401/interact/form...l#edef-TEXTAREA

 

http://no2.php.net/manual/en/function.htmlentities.php

Lenke til kommentar
Nei, du kan ikke bruke <br /> i HTML. Nettleseren rendrer det som linjeskift, for det er jo et linjeskift, men det er ikke lov i HTML. Det skal lukkes i XHTML, men ikke i HTML.

 

Uuups. My mistake, beklager så mye! :D

 

Riktignok er det kun Netscape 3 som har problemer med <br />, og benytter man html4 isteden for xhtml, mister man jo uansett de fleste fordelene validering gir. Men det er jo en annen sak. :D

Lenke til kommentar
Jeg har en <form>, og i formen har jeg et text-area. Jeg vil at et linjeskift i text-area'en skal konverteres til en <br>. Noen som vet om dette kan gjøres?

 

Jeg håper at du har en plan for hvordan du skal vise teksten for sluttbruker igjen.

 

Du har ikke lov til å benytte så mye som en tag i ett textarea, så hvis du skal vise teksten du nå får i ett textarea, må du fjerne <br> og erstatte det med \n, samt at du må sikre at alle elementer blir omskrevet til tekst.

 

http://www.w3.org/TR/html401/interact/form...l#edef-TEXTAREA

 

http://no2.php.net/manual/en/function.htmlentities.php

 

du sier noe der... tenk hvis noen velger å skrive inn en haug med kode i boksen :ohmy: hadde jo vært greit med html on og off... det er til en slags skriblevegg der folk kan legge igjen kommentarer. nå lærer jeg kanskje noe nytt hvis jeg prøver meg på den htmlentities() greien... ;)

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...