计算textarea中的行数,包括自动换行符

时间:2013-09-11 12:20:42

标签: php html forms validation textarea

我有一个textarea

<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;
}

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

2 个答案:

答案 0 :(得分:2)

计算总行数: -

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

答案 1 :(得分:1)

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

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