Подтвердить что ты не робот

PHP-эквивалент функции parseInt JavaScript?

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

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

4b9b3361

Ответ 1

Вы можете использовать регулярное выражение, как показано ниже

$int = (int) preg_replace('/\D/', '', $strNonNumeric);

ИЛИ

$int = (int) preg_replace('/[^0-9]/', '', $strNonNumeric);

Ответ 2

В PHP нет прямого эквивалента pareseInt(), потому что PHP не имеет типа данных NaN. parseInt() будет выдавать NaN, если значение не может быть проанализировано.

Кроме того, parseInt() имеет параметр radix, который не предоставляет ни один из параметров PHP.

Но при этом, если все, что вы хотите сделать, это превратить строку в целое число, то есть несколько вариантов:

$int = (int)$string;

$int = intval($string);

$int = settype($string,'integer');

Эти трое будут работать одинаково. Могут быть некоторые случаи ребер, где intval() отличается от двух других, но в целом они превратят строку в int. В отсутствие NaN все они выводят 0 (ноль), если строка не является числовой и не может быть проанализирована. Но этого должно быть достаточно для большинства целей санитарии БД.

Если вам действительно нужна ошибка NaN, ближайшая вы получите null. Вы можете получить это с помощью filter_var():

$value = filter_var(FALSE, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);

Если вы просто хотите проверить, что строка является числовой, функция is_numeric() может сделать это:

$bool = is_numeric($string);

Тем не менее, он возвращает true для десятичных знаков, а также для научной нотации, поэтому не может быть идеальным для большинства ситуаций. Лучшим вариантом является ctype_digit(), который возвращает true, если строка состоит только из цифр:

$bool = ctype_digit($string);

Если это не подходит, всегда существует опция regex, используя preg_match() или preg_replace(), но это определенно избыточно для такого сценария.

Ответ 4

Вы можете использовать:

$string = "90"; //string
$myInt = (int) $string; //parse to int

Ответ 5

Вы также можете использовать sscanf (как и в C)

<?php

    $str = "10";

    sscanf($str, "%d", $intVal);
    $intVal *= 10;

    echo $intVal;
?>

Вывод:

100