php Laravel 最多只允许连续两个换行符
php Laravel only allow a maximum of two line breaks in a row
我想知道如何限制换行符的数量。我想要做的是 "sanitize" 字符串,这样在将它存储到数据库之前我最多只能连续获得两个换行符。
现在我有这个:
$post->comment = str_replace(array("\r\n", "\r", "\n"), '', $request->input('comment'));
但这会删除所有换行符,我仍然想连续保留一两个换行符。
Dummy text
(linebreak)
some more text
变成这样——还有一个换行符
Dummy text
(linebreak)
some more text
和
Dummy text
(linebreak)
(linebreak)
(linebreak)
(linebreak)
(linebreak)
some more text
变成这样 - 最多只显示两个换行符:
Dummy text
(linebreak)
(linebreak)
some more text
您可以将 preg_replace
与 /(\R{2})\R+/
正则表达式一起使用:
~(\R{2})\R+~
由于单次换行和2次换行都不要碰,所以我们应该只匹配连续3次或以上的换行,并且只保留前2次,也就是正则匹配的。
图案详情:
(\R{2})
- 第 1 组捕获 2 个换行符
\R+
- 1 个或多个换行符
替换包含 </code> 对第 1 组内容的反向引用,将前 2 个换行符重新插入到结果中。</p>
<p><a href="https://ideone.com/vpcXGC" rel="nofollow">Online PHP test</a>:</p>
<pre><code>$str = 'Dummy text
some more text
and
Dummy text
some more text';
$result = preg_replace('~(\R{2})\R+~', '', $str);
echo $result;
所以,使用像
这样的东西
$post->comment = preg_replace('~(\R{2})\R+~', '', $request->input('comment'));
我想知道如何限制换行符的数量。我想要做的是 "sanitize" 字符串,这样在将它存储到数据库之前我最多只能连续获得两个换行符。
现在我有这个:
$post->comment = str_replace(array("\r\n", "\r", "\n"), '', $request->input('comment'));
但这会删除所有换行符,我仍然想连续保留一两个换行符。
Dummy text
(linebreak)
some more text
变成这样——还有一个换行符
Dummy text
(linebreak)
some more text
和
Dummy text
(linebreak)
(linebreak)
(linebreak)
(linebreak)
(linebreak)
some more text
变成这样 - 最多只显示两个换行符:
Dummy text
(linebreak)
(linebreak)
some more text
您可以将 preg_replace
与 /(\R{2})\R+/
正则表达式一起使用:
~(\R{2})\R+~
由于单次换行和2次换行都不要碰,所以我们应该只匹配连续3次或以上的换行,并且只保留前2次,也就是正则匹配的。
图案详情:
(\R{2})
- 第 1 组捕获 2 个换行符\R+
- 1 个或多个换行符
替换包含 </code> 对第 1 组内容的反向引用,将前 2 个换行符重新插入到结果中。</p>
<p><a href="https://ideone.com/vpcXGC" rel="nofollow">Online PHP test</a>:</p>
<pre><code>$str = 'Dummy text
some more text
and
Dummy text
some more text';
$result = preg_replace('~(\R{2})\R+~', '', $str);
echo $result;
所以,使用像
这样的东西$post->comment = preg_replace('~(\R{2})\R+~', '', $request->input('comment'));