文本区域最多允许2个换行符

问题描述

| 我想在文本区域中最多允许2个换行符。 我想要在PHPPHP + JavaScript / jQuery中使用此解决方案。 用户输入的换行符超过2个时,将被2个换行符替换。 输入:
0
1

2


3



4
无论我尝试过还是失败
<html>
<form name=\"f\" method=\"post\">
1 <textarea name=\"t\">
<?PHP
if (isset($_POST[\'t\']))
{
 $t2 = $_POST[\'t\'];
 $t3 = $_POST[\'t\'];
 $t4 = $_POST[\'t\'];
 echo $_POST[\'t\'];
}
?>
</textarea>
<br>
2 <textarea name=\"t2\">
<?PHP
if (isset($_POST[\'t\']))
{
 $t2 = preg_replace(\'/\\s*$^\\s*/m\',\"\\n\",$t2);
 echo preg_replace(\'/[ \\t]+/\',\' \',$t2);
}
?>
</textarea>
<br>
3 <textarea name=\"t3\">
<?PHP
if (isset($_POST[\'t\']))
{
 $t3 = preg_replace(\"/[\\n]+/m\",\"\\n\\n\",$t3);
 //$t3 = preg_replace(\"/[\\r\\n]+/m\",$t3);
 $t3 = preg_replace(\"/[\\t]+/m\",\"\\t\",$t3);
 $t3 = preg_replace(\"/[  ]+/m\",\" \",$t3);
 //$t3 = preg_replace(\"/\\s+/\",$t3);
 echo $t3;
}
?>
</textarea>
<br>
4 <textarea name=\"t4\">
<?PHP
if (isset($_POST[\'t\']))
{
 //$t4 = preg_replace(\'/[\\n\\r]{2,}/\',$t4);
 $t4 = preg_replace( \"\\r\\n\\r\\n([\\r\\n]+)\",\"\\r\\n\\r\\n\",$t4);
 echo $t4;
}
?>
</textarea>
<input type=\"submit\">
</form>
</html>
    

解决方法

        只需执行
$subject = preg_replace(\'/\\n{2,}/\',\"\\n\\n\",$subject);
,它将捕获两个或更多换行符,并将其替换为两个换行符。 编辑 如果您想更安全,则可以将模式更改为
/[\\n\\r]{2,}/
,以便也可以接收回车,但我认为这是不必要的。     ,        尝试这个:
$data = \"whatever data with \\r\\n\\r\\n\\r\\n more than \\r\\n two lines \\r\\n\\r\\n example\";
$fixed_data = preg_replace( \"\\r\\n\\r\\n([\\r\\n]+)\",\"\\r\\n\\r\\n\",$data);
echo $fixed_data;
// should output: whatever data with \\r\\n\\r\\n more than \\r\\n two lines \\r\\n\\r\\n example
上面的正则表达式替换应查找两个新行(具有可选的无限多个新行),并将它们全部替换为2个新行。 :)     ,        
$data = preg_replace(\'/(\\r?\\n){3,$data);