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.
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php