|
|
|
|
<?php
$item = "aaaaaaaaaaaaaaaaaaaaa";
$notice = "Длина недостаточная";
function error_length($item,$notice){
return (mb_strlen($_POST[$item]) < 4 || mb_strlen($_POST[$item]) > 50)? print $notice : print "OK";
}
error_length($item,$notice);
?>
|
Почему вне зависимости от длины переменной пишет "Длина недостаточная"?
Мне надо проверку на длину функцией сделать. | |
|
|
|
|
|
|
|
для: Лена
(12.11.2009 в 00:26)
| | Переменная $_POST["aaaaaaaaaaaaaaaaaaaaa"] существует? | |
|
|
|
|
|
|
|
для: Drago
(12.11.2009 в 00:35)
| | $_POST["aaaaaaaaaaaaaaaaaaaaa"] существует. Проверила.
У меня mb_strlen не работает. Вообще. Даже в варианте с указанием кодировки: mb_strlen($string,"utf-8"); Страница не грузится, ошибок - никаких.
Попробовала вот этот вариант взамен, это получилось:
<?php
function utf8_strlen($string){
return strlen(preg_replace('/./us', '.', $string));
}
$string = 'asdf';
$a = utf8_strlen($string);
|
Но хочется разобраться, что здесь не так. | |
|
|
|
|
|
|
|
для: Лена
(12.11.2009 в 11:17)
| | У меня так вообще эту функцию не находит )))
ЗЫ. а почему Вы не хотите исопльзовать strlen? Понимаю конечно, что интересно, почему не работает тот скрипт, но всё же...
А ошибка у вас скорее всего в том, что вы в RETURN пишуте print. Вроде бы так делать нельзя... | |
|
|
|
|
|
|
|
для: Лена
(12.11.2009 в 11:17)
| | А сама библиотека php_mbstring у вас подключена? | |
|
|
|
|
|
|
|
для: Лена
(12.11.2009 в 00:26)
| | Массив $_POST существует вне функции, я так понимаю
А в функции то этого массива нет.
И, как правильно заметили, не надо писать "return print", пишите просто "print" или "echo".
И еще, использовать функции mb_ как обычные (не указывая кодировки), по-моему, нелогично | |
|
|
|
|
|
|
|
для: neadekvat
(12.11.2009 в 12:19)
| | >Массив $_POST существует вне функции, я так понимаю
>А в функции то этого массива нет.
А ничего, что массив $_POST суперглобальный?
>И, как правильно заметили, не надо писать "return print", пишите просто "print" или "echo".
print это функция, следовательно ошибки в записи "return print 'string';" нет. Просто будет возвращена единица. | |
|
|
|
|
|
|
|
для: Drago
(12.11.2009 в 12:30)
| | Да
Признаю
А скрипт у меня работает, кстати.
Но если библиотека не установлена, то обычно выводится ошибка с указанием на неизвестную функцию. | |
|
|
|
|
|
|
|
для: neadekvat
(12.11.2009 в 12:50)
| | Вывод ошибок, может быть отключен. | |
|
|
|
|
|
|
|
для: Drago
(12.11.2009 в 12:30)
| | >библиотека php_mbstring у вас подключена
где посмотреть, подключена ли она у меня?
>Просто будет возвращена единица.
Почему единица, если есть print 'конкретное значение'?
Вот, что хочу сделать(это уже рабочее, тестировала)
<?php
function error_length($item,$notice){
$item_len = strlen(preg_replace('/./us', '.', $_POST[$item]));
return ($item_len < 4 || $item_len > 50)? print $notice : print "Все норм";
}
error_length('a',"Длина не соответствует");
?>
|
| |
|
|
|
|
|
|
|
для: Лена
(12.11.2009 в 12:56)
| | У меня работает код, который вы показали первым (в первом сообщении темы), не пойму, зачем вы используете рег.выражения.
phpinfo();
напишите и ищите "mbstring" | |
|
|
|
|
|
|
|
для: neadekvat
(12.11.2009 в 13:02)
| | Расширение mbstring установила.
И первый пример у меня тоже получился.
Надо было сразу так сделать, а не извращаться с preg_replace
Всем спасибо за помощь. | |
|
|
|
|
|
|
|
для: Лена
(12.11.2009 в 12:56)
| | > Почему единица, если есть print 'конкретное значение'?
Потому что функция print() всегда возвращает единицу (см. мануал). А 'конкретное значение' выводит в поток вывода.
Вы бы лучше включили вывод ошибок на сервере, чтобы впредь могли точнее определить проблему сами. | |
|
|
|