gpt4 book ai didi

php Laravel 只允许连续最多两个换行符

转载 作者:行者123 更新时间:2023-12-04 16:11:24 29 4
gpt4 key购买 nike

我想知道如何限制换行符的数量。我想要做的是“清理”字符串,以便在将其存储到数据库之前最多连续获得两个换行符。

现在我有这个:

$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+~

参见 regex demo

由于单次换行和2次换行都不要碰,所以我们应该只匹配连续3次或以上的换行,并且只保留前2次,也就是正则匹配的。

图案细节:

  • (\R{2}) - 第 1 组捕获 2 个换行符
  • \R+ - 1 个或多个换行符

替换包含对第 1 组内容的 $1 反向引用,将前 2 个换行符重新插入到结果中。

Online PHP test :

$str = 'Dummy text

some more text

and
Dummy text





some more text';
$result = preg_replace('~(\R{2})\R+~', '$1', $str);
echo $result;

所以,使用类似的东西

$post->comment = preg_replace('~(\R{2})\R+~', '$1', $request->input('comment'));

关于php Laravel 只允许连续最多两个换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40083756/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com