Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

is_int

254
08 ноября 2003 года
Cker
341 / / 20.08.2000
Че она у меня не пашет
input type="text"
пишу в ней 120, а is_int все-равно выдает, что не integer....
???
4.4K
09 ноября 2003 года
penartur
26 / / 08.11.2003
php.net/is_int:
Цитата:
To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric()


А вообще-то можно написать функцию типа

 
Код:
function myisint($var) {
$tmp=$var+1;
$tmp=$tmp-1;
if($tmp==$var) {
 return TRUE;
} else {
 return FALSE;
};
4.4K
10 ноября 2003 года
penartur
26 / / 08.11.2003
Бери функции:

Сначала создаём массив цифр:
 
Код:
<?
var $numbers=Array('0','1','2','3','4','5','6','7','8','9');
?>


Функция myisint (проверяет, что строка - целое число):
Код:
<?
function myisint($str) {
global $numbers;
if(strlen($str)==0) {
 return FALSE; //проверяем, не пуста ли строка
};
if((@$str[0]=='-') or (@$str[0]=='+')) {
 $i=1; //если первый символ + или -, не рассматриваем его
} else {
 $i=0;
};
$isintstr=TRUE;
while(IsSet($str[$i])) {
 if(!in_array(@$str[$i],$numbers)) {
  $isintstr=FALSE; //если i-й символ - не цифра, строка - не целое число
  break;
 };
 $i++;
};
return $isintstr; //возвращаем результат
};
?>


Функция mydecreal (проверяет, что строка - число, в человеческом формате (типа 15.2345)):
Код:
<?
function mydecreal($str) {
global $numbers;
if(strlen($str)==0) {
 return FALSE; //проверяем, не пуста ли строка
};
if((@$str[0]=='-') || (@$str[0]=='+')) {
 $i=1; //если первый символ - знак, не рассматриваем его
} else {
 $i=0;
};
$waspoint=FALSE;
$isdec=TRUE;
while(IsSet($str[$i])) {
 if((@$str[$i]=='.') || (@$str[$i]==',')) {
//если попалась точка или запятая
  if($waspoint) {
   $isdec=FALSE; //если она уже была, строка - не дробное число
   break;
  } else {
   $waspoint=TRUE; //если нет, запоминаем, что была
   $i++;
   continue; //следующий виток цикла
  };
 } else {
  if(!in_array(@$str[$i],$numbers)) {
   $isdec=FALSE; //если символ ещё и не цифра, строка - не дробное число
   break;
  };
 };
 $i++;
};
if(!$waspoint) {
 //если не было точки - это не то, что нам нужно
 return FALSE;
} else {
 return $isdec; //возвращаем результат
};
};
?>


Функция myisreal - проверяет, является ли строка числом в экспоненциальном представлении:
Код:
<?
function myisreal($str) {
global $numbers;
if((@$str[0]=='+') || (@$str=='-')) {
 $i=1; //если первый символ - знак, пропускаем его
} else {
 $i=0;
};
$isreal=TRUE;
$wasexp=FALSE;
if(!((in_array(@$str[$i],$numbers)&&(($str[$i+1]=='.')||($str[$i+1]==','))&&(in_array($str[$i+2],$numbers)))) {
 return FALSE; //проверяем, что первые три символа - цифра, точка и цифра
};
$i=$i+3;
while(IsSet($str[$i])) {
 if(strtolower($str[$i])=='e') {
//если попался разделитель числа и мантиссы
  $wasexp=TRUE;
  $str2=substr($str,$i+1,strlen($str)-$i);
  $isreal=myisint($str2); //проверяем, что оставшаяся часть - целое число
  break;
 };
 if(!in_array(@$str[$i],$numbers)) {
  $isreal=FALSE;
  //если символ ещё и не цифра - строка - не число
  break;
 };
 $i++;
};
if(!$wasexp) {
 //если не было мантиссы - строка - не число
 return FALSE;
} else {
 return $isreal;
};
};
?>


Функция для сведения всего этого вместе: myisnumeric - узнаёт, является ли строка числом хотя бы в одном из трёх представлений:
 
Код:
<?
function myisnumeric($str) {
 return ((myisint($str)||(mydecreal($str)||(myisreal($str)));
 //возвращаем TRUE, если хотя бы одна из трёх функций вернула TRUE
};
?>
1.3K
11 ноября 2003 года
view
148 / / 14.10.2003
А не проще регулярным выражением?
Например:

if(preg_match("/^[-+]?[0-9]+$/", $text))
{
// все цифры
}
else
{
// ...
}
4.4K
11 ноября 2003 года
penartur
26 / / 08.11.2003
Цитата:
Originally posted by view
А не проще регулярным выражением?
Например:

if(preg_match("/^[-+]?[0-9]+$/", $text))
{
// все цифры
}
else
{
// ...
}



Насколько я вижу, эта функция проверяет строку только "на целость"...
Вообще=то функциям с посимвольной проверкой строки хочется доверять как-то больше, чем проверкой совпадения с шаблоном...

1.3K
13 ноября 2003 года
view
148 / / 14.10.2003
Цитата:
Originally posted by penartur


Насколько я вижу, эта функция проверяет строку только "на целость"...
Вообще=то функциям с посимвольной проверкой строки хочется доверять как-то больше, чем проверкой совпадения с шаблоном...



Сам то понял, что сказал? ;)

Если я правильно понял, "на целость" означает - только целые. Могу предложить шаблон для проверки и "на дробность" :) :
"/^[-+]?\d+(\.\d*)?$/"
Если немного пофантазировать, то можно и для экспоненциального представления придумать шаблон.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог