In a text field it should show up the way it was entered with \n being invisible.
In html use nl2br().
If storing the text in the DB store it there in the way your user entered it and just use nl2br() for html - assume that any time you pull it out will be for a text area.
Thats pretty much the same thing Fou said but with a slightly different twist on the explanation.
My helpful sig has gone because a mod below the administrator gave me an infraction - despite the administrator personally agreeing to it.
If you need any php tips or tricks you can PM me.