我想在文本区域中最多允许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>
答案 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);