【问题标题】:Count lines in textarea including automatic line breaks计算 textarea 中的行数,包括自动换行符
【发布时间】:2013-09-11 12:20:41
【问题描述】:

我有一个文本区域

<textarea id="text" name="text" rows="6"></textarea>

<style>
    #text { width: 30%; }
</style>

提交表单时,我需要检查输入是否超过 6 行。我有一个 JS 代码,它检查滚动条(滚动条存在 = 超过 6 行 = 无效输入),它工作得很好。棘手的部分是,在禁用 JS 的情况下如何使用 PHP 验证输入?

我试过这样的

public function overflowValidator($input, $maxLines, $cols) {
    $linebreakCount = substr_count($input, "\n");
    $overflow1 = ($linebreakCount <= $maxLines);
    $overflow2 = (ceil(strlen($input) / $cols) <= $maxLines);
    return $overflow1 && $overflow2;
}

最大的问题是文本区域的宽度是动态的(响应式设计),所以我不能轻易说出一行中有多少个字母。恐怕这无法解决,但也许有一个我不知道的解决方案......

【问题讨论】:

  • 为什么不统计字符串中的字符数呢?我看不出计算行数的目的......
  • int strlen (string $string)
  • 当我稍后在不同的页面上显示它时,容器必须与 textarea 具有完全相同的大小,因此它们看起来都相同(我需要通过限制它来限制它的大小行数)。这就是为什么...
  • 不过,计算行数以创建相同的 textarea 对我来说没有多大意义。字符计数函数在 PHP 或 Javascript 中是标准的,而不是行计数是有原因的。我只是创建另一个具有相同尺寸的文本区域并限制字符数...

标签: php html forms validation textarea


【解决方案1】:

计算总行数:-

$lines = preg_split('/\n|\r/',$str);
$Total_lines = count($lines); 
echo $Total_lines;

【讨论】:

    【解决方案2】:

    计算字符总数而不是行数可能是一个更好的主意,但这里是允许您这样做的代码:

        preg_match_all("/(\n)/", $_POST['text'], $matches);
        $total_lines = count($matches[0]) + 1;
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 2011-09-16
      • 2015-09-13
      • 1970-01-01
      • 2021-08-07
      相关资源
      最近更新 更多