is_numeric, intval, ctype __ цифра.. можно ли полагаться на них?

Используйте функцию wp_title () для отображения или получения заголовка страницы для всех областей сайта.

6
задан Binary Worrier 20 January 2009 в 18:22
поделиться

6 ответов

is_numeric, intval, и ctype_digit все делают совсем другие вещи.

is_numeric скажет Вам, если содержание переменной будет числовым (т.е. верным, если это - значение с плавающей точкой или целочисленное значение).

intval пытается преобразовать строку чисел к целочисленному значению

ctype_digit скажет Вам, если строка будет содержать только цифровые символы (то выполнит ту же проверку как Вы функция isNum).

лучший подход должен, вероятно, проверить, верен ли is_numeric, и затем используйте что-то вроде settype ($myvalue, 'целое число') или intval ($myvalue);

12
ответ дан 8 December 2019 в 02:53
поделиться

Вы назвали два вида функций:

Блок проверки допустимости проверяет, имеет ли данное значение данные характеристики и возвращает любой TRUE или FALSE.
is_numeric, ctype_* функции и Ваш isNum функция проверяет функции, как они просто говорят Вам, если значение допустимо или нет.

Фильтр изменяет данное значение таким способом, которым новое значение имеет данные характеристики и таким образом будет допустимо.
intval и filter_* функции фильтруют функции, поскольку они всегда будут возвращать допустимые значения, которые передали бы блок проверки допустимости.

4
ответ дан 8 December 2019 в 02:53
поделиться

Можно также использовать новые функции фильтра.

if (!$var = filter_var($var, FILTER_VALIDATE_INT)) {
  die('Not an int!');
}

echo "Var has the value $var.\n";

Лучше всего используемый, когда вход фильтрации от cli, веб-клиента, и т.д. Список фильтров здесь.

2
ответ дан 8 December 2019 в 02:53
поделиться

Я не уверен, почему Вы просто не использовали бы intval. Ваш regex даже не составляет отрицательные числа, в конце концов, в то время как intval будет (хотя, возможно, это - то, для чего Вы идете?).

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

0
ответ дан 8 December 2019 в 02:53
поделиться

Я не эксперт по PHP, но имею Вас рассмотренный записью управляемого данными модульного теста для получения конкретного понимания тех функций. Если Вы не уверены в их надежности, и документация неясна, то ничто не бьет модульный тест, который может протестировать 1000-е перестановок и их ожидаемого вывода.

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

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

Просто мысль.

0
ответ дан 8 December 2019 в 02:53
поделиться

Следуйте документам. is_numeric всегда будет доступно и просто проверяет это, у Вас есть строка, которую мог считать числом PHP. ctype_* функции являются немного более узкими в объеме, но должны также всегда быть доступными.

RegEx, IMO, излишество для таких проверок.

1
ответ дан 8 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: