2013-06-10 2 views
0

У меня есть ввод для ввода пользователем номера телефона, и я использую int();, прежде чем вставлять его в базу данных.Ввести номер телефона в базу данных

вставить некоторые телефонный номер 0398765899-> 398765899 в БД

int(); PHP автоматически удалить первый 0, кажется, хорошо, но я, когда я пытаюсь

$var=0177; 
    echo $new=(int)$var; 

в PHP файл, результат стал 127

+1

Зачем преобразовывать номер телефона в целое число? Это строковое значение, а не числовое значение. – David

+4

'$ var = 0177' не является целым числом - это восьмеричное значение. посмотрите http://php.net/manual/en/language.types.integer.php – sircapsalot

+0

введите номер телефона в качестве строки в качестве номера покрытия в восьмеричном –

ответ

4

Номер телефона - это строка; не число. Подумайте, 1-800-FOO-BANG.

Также обратите внимание, что они не всегда форматируются одинаково. Примеры:

  • (123) 456 7890 или 123-456-7890 - US
  • (+33) 1 23 45 67 89 - Франция
+0

что делать, если пользователь печатает какой-то текст сверху, например wa 098 ow 988 – user2178521

+0

, чтобы добавить к нему - ознакомьтесь с http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation – sircapsalot

+0

@ user2178521: это зависит от вас, так как вам решать, какие форматы почтового индекса приемлемы. (подсказка: там есть десятки форматов почтового индекса, а в некоторых странах вообще нет почтовых индексов). –

1

Используйте PHP фильтры:

filter_var($var, FILTER_SANITIZE_NUMBER_INT); 
0

Это не работает:

$var=0177; 
echo $new=(int)$var; 

Потому что PHP думает, что это восьмеричное число. Это работает:

$var='0177'; 
echo $new=(int)$var; 
0

Это потому, что число в формате 0ddd трактуется PHP как восьмеричное число. Вот почему вы получаете 127 после преобразования в int.

также как @Denis предлагает хранить телефонные номера как int - это не очень хорошая идея.

0

при преобразовании значения в целое число всегда удаляет первые нули, потому что нуль не имеет значения на первом месте в соответствии со значительными цифрами. вы должны оставить номер в виде строки.

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