Avatar billede dingkee Nybegynder
21. marts 2007 - 13:16 Der er 14 kommentarer

Fjerne br i input

Hej,

Jeg er ved at lave en side hvor jeg kan rette i noget tekst i databasen. Når dataen bliver lagt i databasen bliver linieskiftene lavet om til <br />

Men når jeg så vil rette i det kommer det til at se sådan ud i text area boksen:
ewra<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
erwszf<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
regd

Og der bliver tilføjet et <br/> for hver gang man gemmer..

Hvordan får jeg det lavet om så man ikke kan se <br /> i mit text area??
Avatar billede sone Nybegynder
21. marts 2007 - 13:20 #1
erstat <br /> med "\r\n"
Avatar billede dingkee Nybegynder
21. marts 2007 - 13:25 #2
hvordan gør jeg det?? når det bliver lagt i databasen er det sådan her:
$tekst = nl2br($_POST["tekst"]);
Avatar billede sone Nybegynder
21. marts 2007 - 13:36 #3
Avatar billede dingkee Nybegynder
21. marts 2007 - 13:49 #4
det fatter jeg så minus af :)
Avatar billede sone Nybegynder
21. marts 2007 - 13:54 #5
$textUdenBR = str_replace('<br />', "\n", $textMedBR);
Avatar billede j4k0b Nybegynder
21. marts 2007 - 14:26 #6
Jeg vil anbefale dig at indsætte ren tekst i din database. Det er langt nemmere at administrerer, feks. undgår man problemer som du får der..

Benyt først nl2br() og htmlentities() der hvor teksten skal vises som HTML.
Avatar billede coderdk Praktikant
21. marts 2007 - 14:33 #7
Jeg er enig med j4k0b, brug først nl2br når du udskriver teksten...
Avatar billede dingkee Nybegynder
21. marts 2007 - 14:46 #8
Dvs når jeg sætter det ind i min database skal jeg gøre sådan her:
$tekst = $_POST["tekst"];

Også når jeg vil hente det ind igen:
$textUdenBR = str_replace('<br />', "\n", $tekst);
Avatar billede j4k0b Nybegynder
21. marts 2007 - 15:05 #9
For en sikkerheds skyld skal du bruge addslashes() før du indsætter noget i din database, som en gæst/bruger har skrevet :-) Det er for at undgå SQL injections. Funktionen tilføjer simpelt hen bare et backslash (\) foran ' og " tegn i teksten, så brugeren ikke kan "modificere" din SQL forespørgsel.

Når du indsætter tekst:
$tekst = addslashes($_POST['tekst']);

Når du henter teksten ud igen skal backslashes fjernes, og \n laves om til <br />. Dog har jeg tit oplevet at PHP tilføjer for mange backslashes til teksten når den indsættes i databasen, derfor kan du bruge denne lille funktion:

function parse_db_text($text) {
    while(strpos($text, '\\') !== false) {
        $text = stripslashes($text);
    }
    $text = nl2br($text);
    # Hvis du ønsker at det ikke skal være muligt at skrive
    # HTML i din besked, så udkommentér denne linie:
    //$text = htmlentities($text);
    return $text;
}
$tekst = parse_db_text($tekst_fra_db);
Avatar billede olebole Juniormester
21. marts 2007 - 15:16 #10
<ole>

addslashes er ikke nogen synderlig god sikkerhed mod sql-injection - men dog bedre end ingenting  :)

I stedet for at tilføje slashes, der i forvejen bliver tilføjet af MySQL, kan det være en fordel at spørge til, hvad MySQL har tænkt sig at gøre ved strengen, når denne insættes i DB'en:

$tekst = !get_magic_quotes_gpc() ? addslashes($_POST["tekst"]) : $_POST["tekst"];
// Indsæt i DB her

- og det kan du naturligvis også gøre for at se, om det er nødvendigt at strippe slashes, når du henter fra DB

/mvh
</bole>
Avatar billede dingkee Nybegynder
21. marts 2007 - 15:53 #11
Sone>>
Jeg har prøvet at lave det på din måde, hvis jeg skriver denne tekst:

Dette
er
en
test

men når jeg gør det så kommer teksten i min input til at stå sådan:

Dette

er

en

test

Altså den tilføjer en ekstra linie (html koden er:
                                            Dette<br />
er<br />
en <br />
test
Avatar billede olebole Juniormester
21. marts 2007 - 15:59 #12
Jamen det er vel fordi, din DB allerede indeholder br-tags - og det er ikke hensigtsmæssigt  =)
Avatar billede dingkee Nybegynder
21. marts 2007 - 16:25 #13
Jeg fik det her til at virke:

$tekstuden = str_replace('<br />', "", $tekst);

I skal alle have tak for hjælpen, ved ikke hvad vi gør med point??
Avatar billede Slettet bruger
21. marts 2007 - 16:32 #14
Olebole's kommentar: 21/03-2007 15:16:04
Olebole din post giver ingen som helst mening!

Olebole bruger eksempel til escaping af slashes:
$tekst = !get_magic_quotes_gpc() ? addslashes($_POST["tekst"]) : $_POST["tekst"];

Paa dette tidspunkt er $tekst escapet med addslashes uanset om magic_quotes er slaaet til eller ej - hvilket vil sige samme sikkerhed. :(

Til information:
Addslashes er KUN usikkert for multibyte strenge, det vil sige hvis du har sat charset din database til at haandtere f.eks. kinesiske tegn. Bruger du latin1 (latin1_swedish_ci) eller ligenende har det IKKE noget at sige! Men bruger din database kinesiske tegn saa brug mysql_escape_string() i stedet for.

Skifter du dynamisk charset i dine sql-kommandoer er dette dog heller ikke sikkert saa skal du "binde" dine sql parametre.
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