将两个换行符转换为一个换行符

时间:2015-02-15 21:10:22

标签: php

比如让某人进入textarea:

line
line

我希望它显示为

line line

如果有人进入

line

line

显示为

line
line

Stackoverflow也是这样做的,但我想知道如何使用PHP专门做到这一点。

感谢。

3 个答案:

答案 0 :(得分:0)

$input = "";//your input here;
$output = preg_replace('@\n+@', "\n", preg_replace('@(.+)\n{1}(.+)@', '$1 $2', $input));
echo nl2br($output); //result as html

它很简单,使用正则表达式第1次替换仅匹配空格中的一个新行匹配,然后将多个新行符号的匹配替换为仅一个新行

答案 1 :(得分:0)

您可以使用:

$search = ['~(?<!\s)\h*\R\h*+(?!\s)~', '~\h*(\R)\h*+\s+~'];
$replace = [' ', '$1'];

$str = preg_replace($search, $replace, $str);

\R是一个换行符(无论操作系统如何)。 \h是一个水平空格,用于修剪前导和尾随空格。 (为了更加严谨,您可以将所有\h替换为[^\S\r\n]

答案 2 :(得分:0)

试试这个:

$text=$_POST['text'];

    $array = explode("\n",$text);
    $count = count($array);
    $j = 0;
    foreach($array as $value){
        $j++;
        if(!empty($value)){
            echo $value;
            if($j > 1){
                echo '<br />'; // OR "/n"
                $j = 0;
            }
        }
    }