Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка на длину
 
 автор: Лена   (12.11.2009 в 00:26)   письмо автору
 
 


<?php
$item 
"aaaaaaaaaaaaaaaaaaaaa";
$notice "Длина недостаточная";
function 
error_length($item,$notice){
return (
mb_strlen($_POST[$item]) < || mb_strlen($_POST[$item]) > 50)? print $notice : print "OK";
}
error_length($item,$notice);
?>


Почему вне зависимости от длины переменной пишет "Длина недостаточная"?
Мне надо проверку на длину функцией сделать.

  Ответить  
 
 автор: Drago   (12.11.2009 в 00:35)   письмо автору
 
   для: Лена   (12.11.2009 в 00:26)
 

Переменная $_POST["aaaaaaaaaaaaaaaaaaaaa"] существует?

  Ответить  
 
 автор: Лена   (12.11.2009 в 11:17)   письмо автору
 
   для: 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);



Но хочется разобраться, что здесь не так.

  Ответить  
 
 автор: DEM   (12.11.2009 в 12:10)   письмо автору
 
   для: Лена   (12.11.2009 в 11:17)
 

У меня так вообще эту функцию не находит )))
ЗЫ. а почему Вы не хотите исопльзовать strlen? Понимаю конечно, что интересно, почему не работает тот скрипт, но всё же...

А ошибка у вас скорее всего в том, что вы в RETURN пишуте print. Вроде бы так делать нельзя...

  Ответить  
 
 автор: Drago   (12.11.2009 в 12:19)   письмо автору
 
   для: Лена   (12.11.2009 в 11:17)
 

А сама библиотека php_mbstring у вас подключена?

  Ответить  
 
 автор: neadekvat   (12.11.2009 в 12:19)   письмо автору
 
   для: Лена   (12.11.2009 в 00:26)
 

Массив $_POST существует вне функции, я так понимаю
А в функции то этого массива нет.
И, как правильно заметили, не надо писать "return print", пишите просто "print" или "echo".
И еще, использовать функции mb_ как обычные (не указывая кодировки), по-моему, нелогично

  Ответить  
 
 автор: Drago   (12.11.2009 в 12:30)   письмо автору
 
   для: neadekvat   (12.11.2009 в 12:19)
 

>Массив $_POST существует вне функции, я так понимаю
>А в функции то этого массива нет.

А ничего, что массив $_POST суперглобальный?

>И, как правильно заметили, не надо писать "return print", пишите просто "print" или "echo".

print это функция, следовательно ошибки в записи "return print 'string';" нет. Просто будет возвращена единица.

  Ответить  
 
 автор: neadekvat   (12.11.2009 в 12:50)   письмо автору
 
   для: Drago   (12.11.2009 в 12:30)
 

Да
Признаю
А скрипт у меня работает, кстати.
Но если библиотека не установлена, то обычно выводится ошибка с указанием на неизвестную функцию.

  Ответить  
 
 автор: Drago   (12.11.2009 в 13:53)   письмо автору
 
   для: neadekvat   (12.11.2009 в 12:50)
 

Вывод ошибок, может быть отключен.

  Ответить  
 
 автор: Лена   (12.11.2009 в 12:56)   письмо автору
 
   для: 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 || $item_len 50)? print $notice : print "Все норм";
}
error_length('a',"Длина не соответствует");
?>

  Ответить  
 
 автор: neadekvat   (12.11.2009 в 13:02)   письмо автору
 
   для: Лена   (12.11.2009 в 12:56)
 

У меня работает код, который вы показали первым (в первом сообщении темы), не пойму, зачем вы используете рег.выражения.

phpinfo();
напишите и ищите "mbstring"

  Ответить  
 
 автор: Лена   (12.11.2009 в 13:47)   письмо автору
 
   для: neadekvat   (12.11.2009 в 13:02)
 

Расширение mbstring установила.
И первый пример у меня тоже получился.
Надо было сразу так сделать, а не извращаться с preg_replace
Всем спасибо за помощь.

  Ответить  
 
 автор: Drago   (12.11.2009 в 13:57)   письмо автору
 
   для: Лена   (12.11.2009 в 12:56)
 

> Почему единица, если есть print 'конкретное значение'?

Потому что функция print() всегда возвращает единицу (см. мануал). А 'конкретное значение' выводит в поток вывода.

Вы бы лучше включили вывод ошибок на сервере, чтобы впредь могли точнее определить проблему сами.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования