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

Форум Регулярные Выражения

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

 

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

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

тема: Как сделать шаблон для целого числа?
 
 автор: jeans1986   (20.09.2007 в 12:27)   письмо автору
 
 

Как сделать шаблон для целого числа? Т.е мне надо чтоб рег. выражения проверяло число целое или нет (целые числа - все положительные, отрицательные и 0).
"|^[\d]*$|"-этот вариант не работает. Заранее спасибо.

   
 
 автор: SHAman   (20.09.2007 в 12:31)   письмо автору
 
   для: jeans1986   (20.09.2007 в 12:27)
 


/^-?\d+$/

   
 
 автор: Faraon   (20.09.2007 в 12:55)   письмо автору
 
   для: SHAman   (20.09.2007 в 12:31)
 

Можно и без регулярок обойтись, функция is_int();

<?php
$int
=9.8;
if(
is_int($int)){
  print 
"Целое число";
}

?>

Или же is_integer() собственно одно и тоже

   
 
 автор: Unkind   (20.09.2007 в 15:21)   письмо автору
 
   для: Faraon   (20.09.2007 в 12:55)
 

Можно и без регулярок обойтись, функция is_int()
Эта функция проверяет тип переменной, а не само содержимое.

   
 
 автор: Faraon   (20.09.2007 в 15:34)   письмо автору
 
   для: Unkind   (20.09.2007 в 15:21)
 

А здесь и не надо проверять содержимое, достаточно проверить тип, так как тип integer не может быть с плавающей запятой

   
 
 автор: Unkind   (20.09.2007 в 15:36)   письмо автору
 
   для: Faraon   (20.09.2007 в 15:34)
 

Поскольку автор не сказал, что нужно проверять тип переменной, а сказал только про RegEx для целого числа, то Вы не можете утверждать, что содержимое проверять не надо.

<?php
$num 
"10"//Число не целое?
?>

   
 
 автор: Faraon   (20.09.2007 в 15:41)   письмо автору
 
   для: Unkind   (20.09.2007 в 15:36)
 

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

   
 
 автор: Unkind   (20.09.2007 в 15:43)   письмо автору
 
   для: Faraon   (20.09.2007 в 15:41)
 

Ну иногда это не так...

   
 
 автор: Faraon   (20.09.2007 в 15:49)   письмо автору
 
   для: Unkind   (20.09.2007 в 15:43)
 

Если это какие то частные случаи, как вы привели пример выше, чтобы число проверять как содержимое строки.

   
 
 автор: Unkind   (20.09.2007 в 15:59)   письмо автору
 
   для: Faraon   (20.09.2007 в 15:49)
 

RegEx для того и существует, чтобы работать со строками. :)

   
 
 автор: Faraon   (20.09.2007 в 16:02)   письмо автору
 
   для: Unkind   (20.09.2007 в 15:59)
 

А я и не говорил, что не для этого. Я считаю что если надо проверить число целое оно или нет, то и надо проверять как число, а не как строку, но это может быть мое субъективное мнение

   
 
 автор: Unkind   (20.09.2007 в 16:05)   письмо автору
 
   для: Faraon   (20.09.2007 в 16:02)
 

Я бы тогда проверял так:

<?php
$foo 
"10";

if(
$foo <> (int) $foo)
{
    echo 
"It isn't an integer.";
}
?>

   
 
 автор: Faraon   (20.09.2007 в 16:12)   письмо автору
 
   для: Unkind   (20.09.2007 в 16:05)
 

Тогда уж вот так

<?php 
$foo 
"10"

if(
$foo == (int) $foo

    echo 
"It is an integer."

?>

   
 
 автор: Unkind   (20.09.2007 в 16:16)   письмо автору
 
   для: Faraon   (20.09.2007 в 16:12)
 

А может вообще так?

<?php  
$foo 
"10";  

if( !(
$foo == (int) $foo) )  
{  
    echo 
"It isn't an integer."
}  
?>

   
 
 автор: Faraon   (20.09.2007 в 16:19)   письмо автору
 
   для: Unkind   (20.09.2007 в 16:16)
 


echo "It is an integer.";  

Вот эта надпись в переводе означает "Это-целое число"
Если вы уж так пишете

   
 
 автор: Unkind   (20.09.2007 в 16:21)   письмо автору
 
   для: Faraon   (20.09.2007 в 16:19)
 

Вот эта надпись в переводе означает "Это-целое число"
Спасибо большое. А я думал что же я написал. :)

   
 
 автор: Faraon   (20.09.2007 в 16:28)   письмо автору
 
   для: Unkind   (20.09.2007 в 16:21)
 

Давайте на вот этом остановимся

<?php
$foo 
10;

if((int) 
$foo)
{
    echo 
"It is an integer.";
}
?>

   
 
 автор: Unkind   (20.09.2007 в 16:35)   письмо автору
 
   для: Faraon   (20.09.2007 в 16:28)
 

Вы что? Это никуда не годится. Число может быть равно нулю, строка может начинаться с цифр, не равных нулю.

   
 
 автор: Faraon   (20.09.2007 в 16:40)   письмо автору
 
   для: Unkind   (20.09.2007 в 16:35)
 

Автор хотел чтобы в диапозоне был ноль
Тогда подойдет
<?php
$foo 
0;

if((int) 
$foo or $foo=="0")
{
    echo 
"It is an integer.";
}
?>

   
 
 автор: Unkind   (20.09.2007 в 17:21)   письмо автору
 
   для: Faraon   (20.09.2007 в 16:40)
 

А "100abc" - десятичное целое число? :)

   
 
 автор: Faraon   (20.09.2007 в 17:32)   письмо автору
 
   для: Unkind   (20.09.2007 в 17:21)
 

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

   
 
 автор: Unkind   (20.09.2007 в 18:24)   письмо автору
 
   для: Faraon   (20.09.2007 в 17:32)
 

Число может быть записано в типе string. Будете спорить? :)

   
 
 автор: Faraon   (20.09.2007 в 17:34)   письмо автору
 
   для: Unkind   (20.09.2007 в 17:21)
 

На счет вашего примера

<?php
$foo 
10;

if(
$foo <> (int) $foo)
{
    echo 
"It is an integer.";
}
?>

Число 10 не является целым?
И ясмотрю уже поправили echo "It isn't an integer."; :)

А здесь видимо тоже 100abc является целым числом :)
<?php
$foo 
"100abc";

if(
$foo <> (int) $foo)
{
    echo 
"It isn't an integer.";
}
?>

   
 
 автор: Unkind   (20.09.2007 в 18:21)   письмо автору
 
   для: Faraon   (20.09.2007 в 17:34)
 

В моем коде такого не будет. Потому как "100abc" и 100 вещи разные.

   
 
 автор: SHAman   (20.09.2007 в 21:36)   письмо автору
 
   для: Unkind   (20.09.2007 в 18:21)
 

Во вы заморачиваетесь :) Блин, прям война!

   
 
 автор: kasmanaft   (21.09.2007 в 11:25)   письмо автору
 
   для: SHAman   (20.09.2007 в 21:36)
 

-

   
 
 автор: Faraon   (21.09.2007 в 09:02)   письмо автору
 
   для: Unkind   (20.09.2007 в 18:21)
 

Ну как же небудет?
Выполните свой код

<?php
$foo 
"100abc";

if(
$foo <> (int) $foo)
{
    echo 
"It isn't an integer.";
}else{
  echo 
"It is an integer.";
        }
?>

Что выведется в браузер?

   
 
 автор: Unkind   (21.09.2007 в 14:55)   письмо автору
 
   для: Faraon   (21.09.2007 в 09:02)
 

if((string) $foo <> (string) (int) $foo)

   
 
 автор: Faraon   (21.09.2007 в 15:14)   письмо автору
 
   для: Unkind   (21.09.2007 в 14:55)
 

Вот так правильно :)

   
Rambler's Top100
вверх

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