Problem mit Zeilenumbrüchen

matzseesi

Erfahrenes Mitglied
Folgendes schräges Problem

Ich trage das ganze mit Hilfe meiner checksql Funktion in die MySQL Datenbank ein:

PHP:
function checksql($char)
{
 $char=mysql_escape_string($char);
 $char=addslashes($char);
 return $char;
}
und gebe es dann formatiert wieder aus. Hab dafür auch eine Funktion nämlich:

PHP:
    function replacestandartstring($char)
    {
    $char=nl2br($char);
    $array_1 = array("ä","ü","ö","ß","®");
    $array_2 = array("ä","ü","ö","ß","®");
    for($x=0;$x<5;$x++)
    {
      $char = str_replace($array_1[$x],$array_2[$x],$char);
    }
    return $char;
    }

Sodala jetzt sieht das ganze aber nicht so aus wie ich es will sondern so

Code:
blablabla\r\nblablabla\r\nblablabla


dh anstatt der<br /> steht \r\n zeichen aber warum
normalerweisse sollte er dies doch verhindern! in die Datenbank wird es richtig reingespeicher dh wenn ich mir den String anschaue dann sind die Enter korrekt gesetzt

Nur wenn ich dies dann auslese und mit nl2br wandle dann macht er mir nur \r\n

auch mit str_replace macht er nichts

PHP:
$char = str_replace("\r\n", "<br>", $char);

Schreibt immer noch ganz normal die \r\n raus! diese Beispiel hab ich aus dem Forum wurde mal gepostet habs auch so probiert

$char = str_replace("[\r\n]{1,*}", "<br>", $char);

geht auch nicht

Was mache ich falsch

Grüße Posseidon
 
Zuletzt bearbeitet:
Versuch doch einfach, die Daten einmal folgendermaßen in die DB einzufügen:
PHP:
function sql_check($str) {
    $str = htmlentities($str);
    $str = addslashes($str);
    return $str;
}
mysql_query("[...]".sql_check($str)."[...]");
Danach gibst du den Text einfach per nl2br() aus.
 
hmm

des mach ich ja!

Es steht ja oben die Daten werden mit der checksql Funktion in die DB geschrieben und dann mit der zweiten Funktion ausgegeben!

Allerdings macht mir die nl2br Funktion nicht das was ich will dh sie macht keine <br> aus den \r\n

Grüße Posseidon
 
Tja, du kannst es auch mit deiner Funktion machen. Ich finde es nur umständlich, wenn du einen Teil der Stringbearbeitung vor und einen Teil der Stringbearbeitung nach dem Einfügen machst (ausgenommen nl2br).
Wenn du es trotzdem mit deiner Funktion machen willst, lass doch mal mysql_escape_string() weg.

PS: str_replace kannst du als Parameter auch Arrays übergeben, deine for()-Schleife ist also umsonst.
 
aber

Des mysql_escape_string sollte man verwenden wenn werte aus der DB in die Datenbank eingetragen werden! zumindest hat das einmal wer im Board hier geschrieben

Aus angst vor MYSQL Injections mach ich das auch oder?

Grüße Posseidon
 
Zurück