Символы на строку и строки в текстовом поле

Я пытаюсь создать многострочный textarea на php-странице, и я хочу проверить, чтобы, если пользователь не может вставить более 50 символов в строке или более 50 строк. Идея состоит в том, что пользователь может вставить что-то из электронной таблицы, но если одна строка содержит более 50 символов, остальные будут отброшены и не будут вставлены в следующую строку. Вот почему я хочу избежать идеи иметь 50 отдельных текстовых полей.

Было бы идеально, если бы это можно было сделать в javascript (или php, но я не видел ничего подобного в php).

Благодаря!

ОБНОВЛЕНИЕ: Спасибо за все ответы, но это будет работать только после того, как пользователь отправит форму, не так ли? Например, если максимальные линии равны 3, а не 50, а пользователь вставляет 100 последовательных символов, а затем разрывает линию, он оставит только 50 символов, ограничив входы до 2 вместо 3. Надеюсь, что я был чист. ,

Здесь он основан на коде, предоставленном Мэтью, но это короче, а также ограничивает количество строк.

$lines = array_slice(explode("\n", $string), 0, 50); // max 50 lines foreach ($lines as $key => $value) { $lines[$key] = substr(trim($value), 0, 50); // max 50 chars } $string = implode("\n", $lines); 

Вы можете разбить это на два процесса:

1: Используйте jQuery (или любую библиотеку JavaScript, которая вам нравится) для проверки ограничения на 50 символов для каждой строки. Плагин проверки достоверности предлагает множество функций, которые могут быть полезны.

2: Используйте php для двойной проверки, только если использование отключает JavaScript на стороне браузера. Это должно быть функцией отправки при отключенном JavaScript (So no Ajax)

Итак, что вам нужно сделать, это прочитать текстовую область в массив, используя разрыв строки \ n, чтобы разделить текст на каждый элемент массива. Теперь проверьте каждый элемент массива на 50 символов. И теперь, когда у вас есть весь текст в массиве, вы также можете проверить строки, а также размер массива.

Используйте explode ("\ n", $ str), чтобы разбить данные текстовой области на строки, а затем проверить длину каждой строки.

Аналогичный метод можно использовать в конце JavaScript с Javascript, но если вы хотите обеспечить безопасность, вы должны сделать это на конце PHP, потому что Javascript можно обойти.

В конечном итоге это зависит от того, облегчить ли жизнь пользователя или предотвратить плохие вещи.

Найдите длину самой длинной линии:

 $length = array_reduce(array_map(explode("\n", $string), 'strlen'), 'max', 0); 

PHP:

 $max_length = 50; $lines = explode("\n", $input); for($i = 0; $i < count($lines); $i++) { $lines[$i] = rtrim($lines[$i]); // just incase there's a "\r" $lines[$i] = (strlen($lines[$i]) <= 50 ? $lines[$i] : substr($lines[$i], 0, 50)); } $input = implode("\n", $lines);