Как получить длину целых чисел в PHP? - PullRequest
27 голосов
/ 22 октября 2010

Я хочу получить длину целочисленных значений для проверки в PHP. Пример: Мобильные номера должны быть только 10 целочисленных значений. Оно не должно быть больше 10 или меньше 10, а также не должно содержать буквенных символов.

Как я могу это проверить?

Ответы [ 9 ]

117 голосов
/ 22 октября 2010
$num_length = strlen((string)$num);
if($num_length == 10) {
    // Pass
} else {
    // Fail
}
31 голосов
/ 22 октября 2010
if (preg_match('/^\d{10}$/', $string)) {
  // pass
} else {
  // fail
}
10 голосов
/ 08 марта 2016

Это будет работать почти во всех случаях (кроме нуля) и легко кодироваться на других языках:

$length = ceil(log10(abs($number) + 1)
6 голосов
/ 18 октября 2012

На мой взгляд, лучший способ:

$length = ceil(log10($number))

Десятичный логарифм, округленный до длины числа.

4 голосов
/ 22 октября 2010

Если вы используете веб-форму, убедитесь, что вы ограничиваете ввод текста только 10 символами, чтобы добавить некоторую доступность (пользователи не хотят вводить неправильно, отправьте, получите диалог об их ошибке, исправьте это, отправить снова и т. д.)

1 голос
/ 06 января 2015

Используйте функцию intval в цикле, Смотрите этот пример

<?php
  $value = 16432;
  $length=0;
  while($value!=0) {
   $value = intval($value/10);
   $length++
  }
  echo "Length of Integer:- ".$length;
 ?>
0 голосов
/ 11 мая 2018

Из вашего вопроса: «Вы хотите получить длину целого числа, ввод не будет принимать буквенно-цифровые данные, а длина целого не может превышать 10. Если это то, что вы имеете в виду; По моему собственному мнению, этолучший способ добиться этого: "

<?php

$int = 1234567890; //The integer variable

    //Check if the variable $int is an integer:
if (!filter_var($int, FILTER_VALIDATE_INT)) { 
    echo "Only integer values are required!";
    exit();
} else {
    // Convert the integer to array
    $int_array  = array_map('intval', str_split($int));
    //get the lenght of the array
    $int_lenght = count($int_array);
}
    //Check to make sure the lenght of the int does not exceed or less than10
    if ($int_lenght != 10) {
    echo "Only 10 digit numbers are allow!";
    exit();
} else {
     echo $int. " is an integer and its lenght is exactly " . $int_lenght;
    //Then proceed with your code
}

    //This will result to: 1234556789 is an integer and its lenght is exactly 10

?>
0 голосов
/ 07 февраля 2017

Если вы оцениваете мобильные номера (номера телефонов), я бы не рекомендовал использовать int в качестве выбранного вами типа данных. Вместо этого используйте строку, потому что я не могу предвидеть, как или почему вы хотели бы сделать математику с этими числами. Лучше всего использовать int, float и т. Д., Когда вы хотите / должны заниматься математикой. Используйте строки, когда вы этого не сделаете.

0 голосов
/ 22 октября 2010
$input = "03432 123-456"; // A mobile number (this would fail)

$number = preg_replace("/^\d/", "", $number);
$length = strlen((string) $number);

if ($number == $input && $length == 10) {
    // Pass
} else {
    // Fail
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...