Re: textarea new line to mysql database
| From: | Michael A. Peters | Date: | Fri, 15 May 2009 16:27:58 +0000 |
| Subject: | Re: textarea new line to mysql database | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-292638@lists.php.net to get a copy of this message | ||
PHPScriptor wrote:
Hello, How do you guys handle this "problem". Just a form with a textarea. When I use enters in the textarea it's saved to the db like this: database: "first line second line" when I edit the value in the form: "first line second line" when I output the value to html: "first linesecond line" (unless I use nl2br()) Is there a way that I could save it to the db that will work for db, output and edit without using any other function like nl2br?I run all text area through a filter that removes the carriage return [ preg_replace('/\r/','',$input) ] and save it in the database with any newline characters. When calling data from the database, I can then use newline as a delimiter for explode generate an array where each element of the array is a distinct line of text - and then do whatever I want with the lines. Effectively what I usually do is the same thing as nl2br - but since I do everything in DOMDocument I have to do it myself (create text nodes for each array element and create break nodes between them). If I'm going to a pre field or back to a text area (IE to edit the data) then I don't have to do anything. I do NOT recommend running nl2br before it goes into the database - as that means you may have to convert the breaks when re-using the data elsewhere, and the proper way to make a break depends upon the output type (IE <br> for html or <br /> for xhtml, etc.) - so keep the newline character in the database and convert to what you need when you call the data from the database.