Avatar billede Probie Nybegynder
10. februar 2012 - 12:59 Der er 6 kommentarer og
1 løsning

$_post fra textarea \r\n til <br/>

Hej alle sammen :)

jeg har et problem med en text jeg skriver i et textarea, jeg vil gerne have det vidst direkte på sitet når jeg trykker på post og jeg vil gerne have det vidst på flere linjer istedet for kun en lang linje.

jeg synes jeg har prøvet alt, nl2br() virker ikke og jeg kan simpelthen ikke finde en preg_replace der virker det bliver bare ved med at stå på en linje når jeg echo'er det. :(

hva skal jeg gøre for at få det til at stå på flere linjer?
Avatar billede The_Buzz Novice
10. februar 2012 - 13:12 #1
hvad med str_replace

$posttxt = $_POST['text'];
$posttxt = str_replace("\r\n", "<br />", $posttxt);
$posttxt = str_replace("\n", "<br />", $posttxt);
Avatar billede Probie Nybegynder
10. februar 2012 - 13:20 #2
nej det virker ikke den står bar på en linje:
Det her er en test\r\nDet her er linje to i testen\r\n
Avatar billede The_Buzz Novice
10. februar 2012 - 13:21 #3
Kan du smide noget test kode?
Avatar billede Probie Nybegynder
10. februar 2012 - 13:22 #4
smid et svar buzz!!! :P it's alive!! jeg rettede bare " omkring \r\n til ' også virkede det :P
Avatar billede The_Buzz Novice
10. februar 2012 - 13:23 #5
Svar
Avatar billede The_Buzz Novice
10. februar 2012 - 13:26 #6
Jeg har selv haft det der problem tidligere. Forstod heller ikke hvorfor nl2br ikke virkede for mig, men den der "hack" med str_replace virkede for mig...

Undersøgte aldrig nærmere hvorfor det opførte sig så barnligt...
Avatar billede olebole Juniormester
10. februar 2012 - 14:15 #7
<ole>

Som oftest er der tale om 'barnlig opførsel' fra koderens side  *o)

Problemet skyldes nemlig, at data bliver escaped - enten af PHP eller af koderen selv (f.eks. med mysql_real_escape_string). Derfor står der ikke \r\n i koden - men \\r\\n:

<?php
$text = "ole\r\nbole";
echo nl2br($text).'<hr>';

$text = mysql_real_escape_string($text);
echo nl2br($text);
?>

Hvis du bruger mysql_real_escape_string, bør du helt klart kikke på prepared statements i mysqli. PHP's almindelige mysql-API er efterhånden forældet, og i dag bruger man mysqli, som er langt sikrere end at 'hacke' sig frem med mysql_real_escape_string el.lign.

Derudover er det en skidt løsning at erstatte newlines ved indsætning i databasen. Det bør gøres efter hentning - lige inden udskrift. Ellers vil det meget let skabe problemer.

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Politiets Efterretningstjeneste

Testere med flair for test management

Netcompany A/S

Software Developer

Udviklings- og Forenklingsstyrelsen

Teknisk tester der brænder for automatisering

Cognizant Technology Solutions Denmark ApS

Test Manager