嗨,这很简单
我想知道如何使用nl2br();在PHP中,但限制一次允许的连续< br />的数量。
//例如:用户输入
1st line 2 line breaks 3 line breaks 6 line breaks 2 line breaks
反正有没有PHP将< br />'限制为不超过x时的数字
因此,如果我们一次仅允许4< br>输出
1st line 2 line breaks 3 line breaks 6 line breaks (changed to 4) 2 line breaks
答案 0 :(得分:4)
在将内容传递到nl2br:
之前,尝试使用正则表达式来限制顺序换行符$clean = preg_replace('/\n{4,}/', '\n', preg_replace('/\r/', '', $dirty));
对于没有经验的人:
因此,一行中四个或更多新行的任何序列都将减少为一个。
不幸的是,这很容易被打败。用户可以简单地过来并按Enter键+空格+输入+空格+输入+空格...
但这是一个开始。让我们让它变得更加白痴。
$dirty = preg_replace('/\r/', '', $dirty);
$clean = preg_replace('/\n{4,}/', '\n', preg_replace('/^\s+$/m', '', $dirty));
现在我们也是:
所以,现在它删除了\ r,然后将只有空格的行更改为空,然后它限制空行。
请注意,这可能会破坏格式化,具体取决于您使用的标记。某些标记引擎可以在纯空白行上运行,并使用它们进行智能操作,例如此处使用的标记引擎。
你考虑过禁止混蛋吗?它有时是有效的。 :)
答案 1 :(得分:2)
得到它们,这不会允许一次超过x量的换行符。
$ string =输入正在修改
$ num =我们不允许用户浏览的换行符数量
function nl2br_limit($string, $num){ return preg_replace('/\n/', '<br/>', preg_replace('/(\s{'.$num.'})\s+/','$1', $string)); }