Jörg: DB -> JS -> Textarea

Beitrag lesen

Hallo Rolf,

weshalb ich dachte, dass ich den Wert mit javascript_escape() behandeln könnte.

Was ist das für eine Funktion? Die kenne ich weder in PHP noch in JavaScript.

Oh, hatte ganz vergessen, dass das keine php-Funktion ist.


/**
 * Maskiert Sonderzeichen für den JavaScript-Kontext.
 *
 * @param $value string Der zu behandelnde Wert.
 * @return string
 */
function javascript_escape($value)
{
    return strtr((string)$value,array(
        "'" => '\\\'',
        '"' => '\"',
        '\\' => '\\\\',
        "\n" => '\n',
        "\r" => '\r',
        "\t" => '\t',
        chr(12) => '\f',
        chr(11) => '\v',
        chr(8) => '\b',
    ));
}

Und ich stelle das in HTML einfach 1:1 wie aus der DB dar, also ohne nl2br().

Das onclick-event selber hat verschiedene Parameter, unter anderem eben javascript_escape($bemerkungen). Und da Bemerkungen in der DB mehrzeilig sein können, muss ich mich um die Zeilenumbrüche irgendwie "kümmern), denn wennn ich sie "raw" übergebe, erhalte ich einen JS-Fehler.

Edit:

Habe festgestellt, dass der Parameter anstelle der Zeilenumbrüche jeweils Doppelshlash n enthält.

Wenn ich die Funktio9n nun wie folgt umbaue, dann werden die Zeilenumbrüche in der Textarea korrekt dargestellt.

function javascript_escape($value)
{
    return strtr((string)$value,array(
        "'" => '\\\'',
        '"' => '\"',
        '\\' => '\\\\',
        "\n" => '\n',
        "\\n" => '\n',
        "\r" => '\r',
        "\t" => '\t',
        chr(12) => '\f',
        chr(11) => '\v',
        chr(8) => '\b',
    ));
}

Jörg