【问题标题】:Limit lines in textarea in php?限制php中textarea中的行数?
【发布时间】:2014-09-19 20:02:28
【问题描述】:

下面的这个脚本可以工作,但是如果我在最后一行输入更长的单词,它会被扩展到额外的行并且脚本会接受吗?如何确保以任何可能的方式只接受 7 行?

$lines = array_slice(explode("\n", trim( $_POST['description'])), 0, 7); // max 7 lines

foreach ($lines as $key => $value)
{
    $lines[$key] = substr(trim($value), 0, 200); // max 200 chars
}

$insert['teams_descr'] = implode("\n", $lines);
                $this->db->update( 'teams', $insert, array( 'teams_id' => $this->user->leader_team_id() ) );

【问题讨论】:

  • You posted this already - 另外我引用你的另一个问题 - “实际上它确实有效,但是如果我输入更大的句子,比如一个单词......” - 如果你想限制文本,使用strlen() 而不是trim()。这应该作为完全相同的副本关闭。
  • 如果一个单词使句子换行,它并不是真正的换行。
  • 即使你在最后写了一个长字,它可能看起来你在下一行,但从逻辑上讲,它不是每一行使用 enter (\n) 分隔的。
  • 是的,逻辑上不是,但我正在寻找一种方法来切断它,并通过写更大的单词或故意这样做来避免这个新行。有什么办法吗?

标签: php codeigniter textarea


【解决方案1】:

通过编写一个函数并通过 textarea 的 onChange attr 调用它,在 javascript 中放置一个约束以不允许超过 7 行。然后在 php 中检查换行符的数量。除非有人作弊或者你的 js 代码不起作用,否则它永远不会超过 7。

根据您的要求(其中行不能超过指定的字符数),您的 js 函数必须同时考虑实际返回和字符数,因此它必须在一定数量的字符之后插入一个真正的返回字符字符,但必须以不破坏中间单词的方式这样做。因此,当您达到一行的最大字符数时,您必须返回前一个空格并在那里插入一个返回字符。类似的东西。但是,如果文本似乎不包含实际单词,即使没有空格,您也可能希望它继续分解文本。由于只有您完全了解您的要求,因此只有您可以编写代码。甚至任何示例代码对您来说都是毫无价值的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2014-07-03
    • 2018-12-31
    • 2015-09-20
    • 2011-09-23
    • 2016-12-16
    相关资源
    最近更新 更多