2011-02-02 2 views
3
function integer($str) 
    { 
     if(preg_match('/[^0-9]/', $str)) 
     { 
      return FALSE; 
     } 

     else 
     { 
      return $str; 
     } 
    } 

Возможно ли создать тернарный оператор для этого утверждения в PHP?Можно ли создать тернарный оператор для этого утверждения в PHP?

+2

Если это не обучение упражнения, я d рекомендуем встроенную функцию 'is_int': http://php.net/manual/en/function.is-int.php –

+1

@SimpleCoder Это проверяет тип, а не содержимое - 'is_int (" 4 ")' возвращает false. – lonesomeday

+0

@lonesomeday: Спасибо, я имел в виду 'is_numeric' –

ответ

5

Да:

function integer($str) { 
    return (preg_match('/[^0-9]/', $str) ? false : $str); 
} 
+0

Спасибо! Это работает. –

+0

'$ str =" "' должен возвращать '' ''? – salathe

+0

@salathe - просто рассмотрение вопроса OPs не критикует его код/​​процесс. – Rudu

3

Вы должны использовать ctype_digit для этого:

function integer($str) { 
    return ctype_digit($str) ? $str : false; 
} 

filter_var Или использовать с FILTER_VALIDATE_INT:

function integer($str) { 
    return filter_var($str, FILTER_VALIDATE_INT, array(
     'options' => array('min_range' => 0), 
     'flags' => FILTER_FLAG_ALLOW_OCTAL 
    )); 
} 
+0

'filter_var' может быть сконфигурирован для обеспечения минимальных и максимальных значений, поэтому вы можете также ограничить его только целыми положительными значениями. – Gordon

+0

@ Gordon: Можно ли указать только «min_range»? – NikiC

+1

@ Gordon, re. восьмеричный, см. флаг 'FILTER_FLAG_ALLOW_OCTAL'. – salathe

Смежные вопросы