3

我有一个文本区域

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

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

4

2 回答 2

2

计算总行数:-

$lines = preg_split('/\n|\r/',$str);
$Total_lines = count($lines); 
echo $Total_lines;
于 2016-01-05T08:48:53.167 回答
1

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

    preg_match_all("/(\n)/", $_POST['text'], $matches);
    $total_lines = count($matches[0]) + 1;
于 2013-09-11T18:17:33.070 回答