在textarea中最多允许2个换行符

时间:2011-06-25 03:22:02

标签: php javascript jquery preg-replace

我想在文本区域中最多允许2个换行符 我想用PHP或PHP + 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", "\n", $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,}/', "\n\n", $t4);
 $t4 = preg_replace( "\r\n\r\n([\r\n]+)", "\r\n\r\n", $t4);
 echo $t4;
}
?>
</textarea>
<input type="submit">
</form>
</html>

3 个答案:

答案 0 :(得分:2)

只需执行$subject = preg_replace('/\n{2,}/', "\n\n", $subject);这将捕获两个或更多新行,并将其替换为两个换行符。

修改

如果您想要更安全,可以将模式更改为/[\n\r]{2,}/以捕获回车,但我认为这是不必要的。

答案 1 :(得分:0)

试试这个:

$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个新行替换它们。

:)

答案 2 :(得分:0)

$data = preg_replace('/(\r?\n){3,}/',"\n\n",$data);