Php количество символов input

Ограничение длинны переменное, либо атрибута name?

Добрый день! У меня есть форма, в ней есть тэг input с атрибутом name=»ia-soglasen-poluchat-novostnuiu-rassylku-o-biznes-spravkah-kreditreform» , после отправки формы, php-скрипт не получает, либо получает пустым это поле. Скажите, пожалуйста, это ограничение на количество символов в атрибуте name , или это ограничение на количество символов в переменной, либо индексе массива POST?

2 ответа 2

А не быстрее ли будет проверить? 😉 По результатам приведенного ниже скрипта, проблема ни в том и ни в другом. Экспериментировал для $name длиной 200 символов и его значением также 200 символов. Всё работало корректно. (IIS 5.1 + PHP 5.2.9(ISAPI) ).

Смотрите внимательно архитектуру вашего проекта. Где-то значение теряете. Какой фреймворк используете?

Ограничений на значение индекса ассоциативного массива в PHP нет. Ограничения на размер принимаемых сервером POST-данных задается в директиве post_max_size (доступна с PHP 4.0.3), и по умолчанию составляет 8 Мб.

Что касается Вашего случая — я так понимаю, input имеет тип » checkbox «? Такой input отправляется на сервер только при условии checked == true . Если checked == false то в POST-массиве просто не будет этой переменной, а если checked == true и не установлено значение value , то переменная в POST-массиве будет иметь пустое значение.

ДА верно, но есть ещё одно поле, оно уже type=text name=ukazhite-adres-dostavki-spravki-adres-elektronnoi-pochty-ili-nomer-faksa Оно так же не проходит. Обрабатывает всё это дело CodeIgniter, там вообще весь массив POST циклом проходит, и вот только вот эти последние две поля не обрабатываются. Хм, может быть MySQL виновата, хотя врятли.

Читайте также:  Java lang character to string java

Скорее виноват CodeIgniter — чужой фреймворк = чужая логика. Либо убедитесь, что поля являются частью формы. 😉

Источник

How to Limit Text Characters in PHP?

I was wondering how can I limit a users input like HTML maxlength attribute but with PHP, example would be nice? Is MySQL varchar(255) one way to limit a users character input? What are the cons of just counting on MySQL to do this?

4 Answers 4

$input = $_GET['input']; if ( strlen($input) > 255 )

The main issues of counting on MySQL to truncate the length of a string is the lack of error handling. If users input has been truncated to a length they probably don’t intend it to be and it would (probably) be better to display an error page.

substr($string, $start, $length)

This will cut a string short for you.

$start should be 0 to start from the first character

$length is how long you want the string to be.

Passively shortening input without notice is bad. Throwing an error is better. But in my opinion the best solution is to keep the user from typing too much in the first place. This is easy for fields:

Most browsers will prevent the user from typing more than that. is more difficult to limit, but it can be done with some simple javascript. Twitter does this. Consider the following example, which displays a character count above the textarea:

  function numberOfCharacters(textbox,limit,indicator)   

This crude example does not enforce the character limit, but it does notify the user of the limit. Use this in combination with Yacoby’s strlen() example to throw an error if the user ignores the warning and exceeds the limit anyway. At that point you’ve done all you can to prevent excessive typing, and the user only has himself to blame.

If you are going to impose a character limit, it is common courtesy to notify the user before he types a novel, and to keep count for him.

Источник

Как посчитать количество символов на PHP

В силу рабочих процессов, мне часто приходится заниматься копирайтингом, что обычно подразумевает использование различных сервисов для анализа текста, в том числе и платных. Я думаю, что можно основные инструменты для копирайтинга, такие как “подсчет количества символов” и “подсчет количества слов”, а также подобные задачи, решить с помощью простого PHP скрипта.

Начнем с задачи “как посчитать количество символов на PHP”, ведь это наиболее важно при оптимизации текста.

Создание формы

Скрипт будет работать с текстом пользователя, а соответственно первым делом необходимо создать поле для ввода текста.

Создаём на локальном сервере файл index.php и пишем в него:

< html >
< head >
< meta charset = "utf-8"/>//Задаём кодировку юникод

< body >
< form name = "text-form" method = "post" >//Форма. Так как исполняющий скрипт будет в этом же файле, то атрибут action заполнять не нужно
// Поле для ввода текста, ширина поля 80 символов, высота 6 строк
< br/>
< input type = "submit" value = "Отправить"/>// Кнопка отправки формы
< input type = "reset" value = "Очистить"/>// Кнопка очистки формы


Получается вот такая простенькая форма – как раз то, что нам нужно.

1. Как посчитать количество символов на PHP

Чтобы посчитать количество символов на php, насколько я помню, необходимо использовать функции strlen(). Добавим её в наш код:

$text = $_POST [ ‘text’ ] ; // Создаём переменную $text и помещаем в неё наш текст
echo ‘Количество символов с пробелами : ‘ , strlen($text); // С помощью функции php strlen() считаем количество символов, и выводим результат на экран
?>

Пробуем, вводим «1111», получаем:

как посчитать количество символов php

Вроде бы работает, пробуем «qwerty», получаем:

Как посчитать количество символов на php

Неплохо! И последний контрольный, пробуем «Привет», получаем:

Как посчитать количество символов на php 2

И снова, довольные, получаем количество символов…12…стоп! П-р-и-в-е-т – 6 букв, что-то не так.

Давайте разбираться! Оказывается, причина такого расхождения в том, что функция strlen() считает длину строки в байтах, а не в символах, а размер кириллических символов в UTF-8: по 2 байта вместо 1 для латинских, этого то я и не учёл.

Для того, чтобы правильно посчитать количество русских символов на php, необходимо использовать функцию mb_strlen() и не забыть указать кодировку:

Пробуем ещё раз с помощью php посчитать количество символов в слове «привет»:

Как правильно посчитать количество слов на php

2. Как посчитать количество символов без пробелов на PHP

Теперь давайте попробуем посчитать количество символов не считая пробелы, для этого используем функцию обработки строк str_replace( ):

$text = $_POST [ ‘text’ ] ;
$text_nonspace = str_replace ( array ( » » ) , » , $text ) ; //Ищем в переменной $text пробелы » » и заменяем их на пустоту », результат записываем в новую переменную $text_nonspace.
echo ‘Количество символов с пробелами: ‘ , mb_strlen ( $text , ‘utf-8’ ) ;
echo ‘
‘ , ‘Количество сиволов без пробелов: ‘ , mb_strlen ( $text_nonspace , ‘utf-8’ ) ; //C помощью той же функции php mb_strlen() считаем количество символов в переменной с вырезанными пробелами.
?>

Как посчитать количество сиволов без пробелов php

3. Как сделать, чтобы форма не очищалась после отправки

Идём дальше, как мне кажется, не совсем удобно, что текст из формы пропадает после нажатия на кнопку «Отправить». Давайте попробуем это исправить.

Для этого нам нужно, чтобы при загрузке формы проверялось, есть ли значение в Post и, если есть, подставлялось в форму.

//Определяется, была ли установлена переменная $_POST[‘text’], если да, выводит её значение, если нет, выводит “Введите текст”

$text = $_POST [ ‘text’ ] ;
$text_nonspace = str_replace ( array ( » » ) , » , $text ) ;
echo ‘Количесвто символов с пробелом: ‘ , mb_strlen ( $text , ‘utf-8’ ) ;
echo ‘
‘ , ‘Количество символов без пробела: ‘ , mb_strlen ( $text_nonspace , ‘utf-8’ ) ;
?>

4. Как посчитать количество слов на PHP

Функционал всё растёт, код всё увеличивается. Что дальше? Как посчитать количество символов на php, мы разобрались, теперь давайте попробуем посчитать количество слов.

Сначала мне пришла в голову мысль, что это можно реализовать просто посчитав все пробелы в тексте, но, как оказалось, PHP нам предлагает готовую функцию — str_word_count().

Однако, и тут всё не так просто, как кажется — попробовав функцию в деле, я обнаружил, что она тоже не умеет работать с кириллицей. Не долго думая я написал

str_word_count($text, ‘utf-8’), но функция совсем перестала работать.

Погуглив, я узнал, что заставить функцию работать правильно можно только прописав в charlist все кириллические символы, причём и верхним и нижним регистром. Что такое charlist? Сейчас объясню.

Функция str_word_count() имеет 3 параметра:

  1. String – строка. Обязательный параметр, переменная с текстом.
  2. Format — Указывает возвращаемое значение данной функции.
  • 0 — возвращает количество найденных слов
  • 1 — возвращается массив, содержащий все слова, входящие в строку string
  • 2 — возвращается массив, индексами которого являются позиции в строке string, а знач ениями — соответствующие слова.
  1. Charlist — Список дополнительных символов, которые будут рассматриваться как «слово».

Синтаксис такой: str_word_count(String, format, ‘charlist’), например, str_word_count($text, 0, ‘абв‘).

Таким образом, наша функция должна выглядеть так:

str_word_count($str,0,»АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя»)

Немного подумав, можно укоротить эту строчку. В таблице ASCII все русские буквы (кроме «Ё» и «ё») имеют коды с 192 по 256. Также, у нас есть функция chr(), которая возвращает символ по его коду. Можно сделать простой цикл, который сам запишет в переменную буквы русского алфавита. Понадобится ещё функция iconv(), чтобы перевести текст из кодировки utf-8 в cp1251, так как в utf-8 другие коды символов.

for ( $i = 192 ; $i < 256 ; $i ++ ) {
$abc . = chr ( $i ) ; //Цикл на каждом шагу добавляет к переменной $abc новую букву
}
$abc = iconv ( ‘cp1251’ , ‘utf-8’ , $abc ) ; //Переводим строку из кодировки utf-8 в сз1251
echo ‘Количество слов в тексте: ‘ , str_word_count ( $text , 0 , $abc ) ; ?>

Получилось не намного короче, зато более логично. Мы же всё таки программированием занимаемся. В итоге наш код будет выглядеть так:

$text = $_POST [ ‘text’ ] ;
$text_nonspace = str_replace ( array ( » » ) , » , $text ) ;
echo ‘Количество символов с пробелами: ‘ , mb_strlen ( $text , ‘utf-8’ ) ;
echo ‘
‘ , ‘Количество символов без пробелов: ‘ , mb_strlen ( $text_nonspace , ‘utf-8’ ) ;
for ( $i = 192 ; $i < 256 ; $i ++ ) { $abc .= chr ( $i ) ; }
$abc = iconv ( ‘cp1251’ , ‘utf-8’ , $abc ) ;
echo ‘
‘ , ‘Количество слов в тексте: ‘ , str_word_count ( $text , 0 , $abc ) ;

В браузере же это выглядит вот так:

Как посчитать количество слов php

На сегодня всё, теперь вы легко можете посчитать количество символов на PHP. Если всё-таки у вас остались вопросы – не стесняйтесь, задавайте в комментариях, отвечу всем.

Успехов вам и до новых встреч!

Читайте также похожие статьи:

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

Источник

Оцените статью