PHP understands the line breaks, it's just they aren't recognized in html. try to replace the line break and feed (\r\n) characters with the <br /> using str_replace().
Same thing for the emoicons. Look at how the one on this forum works. It inserts a phrase, say : e v i l g r i n : into the text. All you need to do for the emoicon to show when you view the post after you submit it is to replace (using str_replace for example) the phrase with the right html to insert the image and presto.