preg_replace("/[\r\n]+([^ ])/","\\1",$str) 中
[\r\n]+ 表示多个回车换行符,虽然linux中没有回车符"\r"但加上并无妨碍
([^ ]) 表示一个非空格字符,用括号括起是为了以后引用
\\1 表示前面被括号括起的部分匹配到的字符整个式子的含义是:如果换行符后面没有空格,则删除这个换行符检查是否被删除了要在浏览器的“查看源文件”中检查
你实际上还要有一个nl2br处理
$str = nl2br(preg_replace("/[\r\n]+([^ ])/","\\1",$str));
否则看上去还是连在一起的