keep textarea input format after using mysql_real_escape_string to store

前端 未结 5 1025
时光说笑
时光说笑 2021-01-14 05:05

I am using php5.3.6 and mysql 5.1.56 and CodeIgniter. Here is what I did.

  1. Input some text in textarea, something like this:


    what\'s this?

5条回答
  •  难免孤独
    2021-01-14 06:05

    Short answer:

    // double quotes are *very* important, or chars are not interpreted
    $text_from_db=str_replace("\\r","\r",str_replace("\\n","\n",$text_from_db));
    

    Long answer

    Pretty simple but tricky. You write your textarea and hit the "return" key, there is placed a \r\n (on Windows systems) with slashes that escape the "r" and "n" letter rising their special meaning of carriage return and newline. You actually can't see them because they are "not printable" chars. The slash char itself (0x1B) is invisible, that is a single slash is a "not printable" char, to make it visible you have to "transform" it in a printable slash char (0x5C) and to achieve that you have to double it "\\". Now back to the question: if you can read the slash, probably that's beacuse that slash is not the 0x1B but rather 0x5C, so the "n" and "r" lose their special meaning and you get them as mere strings. The code I posted does this conversion, converting the "[0x5C]n" string in a "[0x1B]" char.

    Notes

    Hope this helps, it did for me. IMPORTANT : it is not normal that the text that comes from the db has this issue if it has been stored correctly. My suggestion is to triple check insertion and retrieving because (given from the issue) you could be applying the quoting twice somewhere.

提交回复
热议问题