Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php nl2br限制x金额_Php - Fatal编程技术网

php nl2br限制x金额

php nl2br限制x金额,php,Php,嗨,这很简单 我想知道如何使用nl2br();在php中,但限制一次允许的连续的数量 //例如:用户输入 1st line 2 line breaks 3 line breaks 6 line breaks 2 line breaks 一线 2个换行符 3个换行符 6个换行符 2个换行符 是否有必要让php将限制为每次不超过x个数字 因此,如果我们一次只允许4个,那么输出将是 1st line 2 line breaks 3 line breaks 6 l

嗨,这很简单

我想知道如何使用nl2br();在php中,但限制一次允许的连续
的数量

//例如:用户输入

1st line 2 line breaks 3 line breaks 6 line breaks 2 line breaks 一线 2个换行符 3个换行符 6个换行符 2个换行符


是否有必要让php将
限制为每次不超过x个数字

因此,如果我们一次只允许4个
,那么输出将是

1st line 2 line breaks 3 line breaks 6 line breaks (changed to 4) 2 line breaks 一线 2个换行符 3个换行符 6个换行符(改为4个) 2个换行符
在将内容传递到nl2br之前,请尝试使用正则表达式限制顺序换行:

$clean = preg_replace('/\n{4,}/', '\n', preg_replace('/\r/', '', $dirty));
对于新手:

  • \r是一个回车,在调用nl2br之前,我们可以安全地去掉它
  • \n是一条新线
  • {4,}表示“将最后一个字符重复四次或更多次
因此,一行中四行或更多新行的任何序列都将减少为一行

不幸的是,这很容易被击败。用户只需点击回车+空格+回车+空格+回车+空格

不过这只是一个开始。让我们做得更像白痴

$dirty = preg_replace('/\r/', '', $dirty);
$clean = preg_replace('/\n{4,}/', '\n', preg_replace('/^\s+$/m', '', $dirty));
现在我们也:

  • 设置“m”修饰符以便
  • ^表示“一行的开头”(没有“m”表示整个字符串的开头)
  • $表示“一行的结尾”(没有“m”表示整个字符串的结尾)
  • \s+表示“任意空格字符,重复”
因此,现在它删除了\r,然后将只有空格的行更改为空,然后限制空行

注意,这可能会破坏格式,具体取决于您使用的标记。某些标记引擎可以在纯空白的行上运行,并使用它们进行智能操作,例如在SO使用的标记引擎


你有没有考虑过禁止乱七八糟的行为?有时是有效的。

在将内容传递到nl2br之前,尝试使用正则表达式来限制顺序换行:

$clean = preg_replace('/\n{4,}/', '\n', preg_replace('/\r/', '', $dirty));
对于新手:

  • \r是一个回车,在调用nl2br之前,我们可以安全地去掉它
  • \n是一条新线
  • {4,}表示“将最后一个字符重复四次或更多次
因此,一行中四行或更多新行的任何序列都将减少为一行

不幸的是,这很容易被击败。用户只需点击回车+空格+回车+空格+回车+空格

不过,这只是一个开始。让我们做得更像白痴

$dirty = preg_replace('/\r/', '', $dirty);
$clean = preg_replace('/\n{4,}/', '\n', preg_replace('/^\s+$/m', '', $dirty));
现在我们也:

  • 设置“m”修饰符以便
  • ^表示“一行的开头”(没有“m”表示整个字符串的开头)
  • $表示“一行的结尾”(没有“m”表示整个字符串的结尾)
  • \s+表示“任意空格字符,重复”
因此,现在它删除了\r,然后将只有空格的行更改为空,然后限制空行

注意,这可能会破坏格式,具体取决于您使用的标记。某些标记引擎可以在纯空白的行上运行,并使用它们做一些聪明的事情,例如在SO使用的标记引擎


你考虑过禁止混蛋吗?它有时是有效的

明白了,伙计们,这一次不允许超过x个换行次数

$string=输入正在修改
$num=我们不允许用户查看的换行数量

function nl2br_limit($string, $num){ return preg_replace('/\n/', '<br/>', preg_replace('/(\s{'.$num.'})\s+/','$1', $string)); } 函数nl2br_limit($string,$num){ 返回preg_replace('/\n/','
',preg_replace('/(\s{'$num.})\s+/','$1',$string)); }
明白了,伙计们,这不允许一次超过x个断线量

$string=输入正在修改
$num=我们不允许用户查看的换行数量

function nl2br_limit($string, $num){ return preg_replace('/\n/', '<br/>', preg_replace('/(\s{'.$num.'})\s+/','$1', $string)); } 函数nl2br_limit($string,$num){ 返回preg_replace('/\n/','
',preg_replace('/(\s{'$num.})\s+/','$1',$string)); }
你是说仅仅是连续换行吗?或者换行符的总数?连续,例如,每篇文本(句子)不能超过4行。您是指仅连续换行吗?或者换行的总数?连续的,例如,你不能有超过4行每文本(句子)非常感谢你的回应,它的伟大的人实际上在这里帮助。我现在就来试试。在上面的脚本中,我将在哪里实现我发布的数据,$\u POST['fb\u msginput'])顺便说一句,不允许使用任何格式,它只是一个正在发布的注释框Charles这是将所有行转换为2个br?它允许4行以下的任何内容,但如果超过4行,则只显示4。将“\n”替换为“\n\n\n”作为第二个参数,以preg\u替换为“\n\n\n”非常感谢您的响应,它的优秀人员实际上在这里提供了帮助。我现在就来试试。在上面的脚本中,我将在哪里实现我发布的数据,$\u POST['fb\u msginput'])顺便说一句,不允许使用任何格式,它只是一个正在发布的注释框Charles这是将所有行转换为2个br?建议允许4行以下的任何内容,但如果超过4行,则只显示4。将“\n”替换为“\n\n\n”作为第二个参数,以便preg\u替换为“\n\n”