Проверьте, имеет ли переменная номер php


Я хочу проверить, есть ли в переменной число, я просто хочу посмотреть, есть ли оно, мне все равно, есть ли в нем что-то еще, например:

"abc" - false
"!./#()" - false
"!./#()abc" - false
"123" - true
"abc123" - true
"!./#()123" - true
"abc !./#() 123" -true

Есть простые способы сделать это, если вы хотите знать, что это все числа, но не если у него только одно. Спасибо за вашу помощь.

Author: Scott, 2009-05-23

5 answers

Вы можете использовать strcspn функция:

if (strcspn($_REQUEST['q'], '0123456789') != strlen($_REQUEST['q']))
  echo "true";
else
  echo "false";

strcspn возвращает длину части, которая не содержит целых чисел. Мы сравниваем это с длиной строки, и если они отличаются, то должно быть целое число.

Для этого нет необходимости вызывать механизм регулярных выражений.

 67
Author: Martin Geisler, 2009-05-23 15:24:15
$result = preg_match("/\\d/", $yourString) > 0;
 12
Author: Tomalak, 2009-05-23 16:04:16

Придерживаясь духа @Martin, я нашел еще одну функцию, которая работает аналогичным образом.

(strpbrk($var, '0123456789')

Например, тестовый случай

<?php

function a($var) {
    return (strcspn($var, '0123456789') != strlen($var));
}

function b($var) {
    return (strpbrk($var, '0123456789'));
}

$var = array("abc", "!./#()", "!./#()abc", "123", "abc123", "!./#()123", "abc !./#() 123");

foreach ($var as $v) {
    echo $v . ' = ' . b($v) .'<hr />';
}

?>
 8
Author: Abhishek Madhani, 2015-02-25 07:29:42

Это должно помочь вам:

$numberOfNumbersFound = preg_match("/[0-9]+/", $yourString);

Вы могли бы получить больше от функции preg_match, поэтому ознакомьтесь с ее руководством

 4
Author: Peter Perháč, 2009-05-23 15:25:06

Вы можете использовать этот шаблон для проверки вашей строки с помощью регулярных выражений:

$isNumeric = preg_match("/\S*\d+\S*/", $string) ? true : false;
 -2
Author: farzad, 2009-05-23 15:24:32