Not really. \n is actually a carriage return, meaning that when user pushes enter, they insert \n and using the nl2br function will transfrom that into <br />. Now, it won't know when to put <p></p> but it will put <br /> in every occurence of enter making the text entered in say textarea look the same in html. Another option to preserve similar formatting to textarea is embedding text in <pre></pre> tags.