Hence nl2br does NOT really replace newlines with <br /> tags (it only inserts a <br /> tag before each \n → newlines themselves are preserved), you can use this function to get it right (realNl2Br):
/** * @param $string - string with * @param bool $xhtml - deliver xhtml confom br's or not (<br /> or <br>) * @return mixed - string with br's */ public function realNl2br($string, $xhtml = true){ $replace = '<br />'; if(!$xhtml){ $replace = '<br>'; } return str_replace( "\n", $replace, $string); }