PHP Удаление ведущих нулей 0 из числа

Я публикую это, поскольку это не то, с чем может быть знакомо большинство новичков.

Проблема

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

Это может показаться простым, но мы не можем просто запустить str_replace поверх него, так как это может удалить действительные 0 в середине числа.

Теперь вы можете выполнять preg match и делать всевозможные причудливые вещи, чтобы найти ответ, но проще всего просто привести числовую строку к типу int.

Давайте использовать следующее в качестве примера:

<?php
    $correct = 45678;
    $incorrect = 0045678;

    echo $correct . '<br />';
    echo $incorrect;
?>

И вы должны распечатать следующее:

45678

0045678

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


person Rudi Strydom    schedule 21.10.2013    source источник
comment
Я не читаю никаких проблем и не читаю никаких вопросов?   -  person dbf    schedule 21.10.2013
comment
stackoverflow.com/search?q=php+remove+leading+zeros: могут ли новички получить на ту страницу?   -  person Hanky Panky    schedule 21.10.2013
comment
Я настоятельно рекомендую вам прекратить публиковать вопросы о вещах, которые могут оказаться полезными для других, и, кроме того, опубликовать свой собственный ответ. ТАК не место для этого.   -  person dbf    schedule 21.10.2013
comment
Не совсем так, дбф. Из Справочного центра: Могу ли я ответить на свой вопрос? Да! Stack Exchange всегда поощрял пользователей отвечать на свои вопросы. просто это дубликат...   -  person user1725145    schedule 21.10.2013
comment
Я думал, что речь идет об обмене знаниями, а не о том, кто самый большой....   -  person Rudi Strydom    schedule 21.10.2013
comment
@dbf Почему нельзя размещать сообщения типа вопросов и ответов? При размещении вопроса есть даже вариант Ответить на свой вопрос. Я согласен, что это не соответствует стандартам SO, но это не значит, что вся концепция не должна быть разрешена.   -  person Linus Oleander    schedule 08.02.2016


Ответы (3)


Используя ltrim:

$str="0045678";

$str = ltrim($str, '0');

echo $str;
person Jenson M John    schedule 21.10.2013
comment
Сработало идеально, спасибо - person Chris; 24.11.2014

вы также можете использовать ltrim() http://de3.php.net/manual/en/function.ltrim.php удаляет нужный символ слева

person Soundz    schedule 21.10.2013

Самое простое решение

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

Используя предыдущий пример:

<?php
    $correct = 45678;
    $incorrect = (int)0045678;

    echo $correct . '<br />';
    echo $incorrect;
?>

И вы должны распечатать следующее:

45678

45678

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

person Rudi Strydom    schedule 21.10.2013
comment
stackoverflow.com/search?q=php+remove+leading+zeros . Неужели новички их не найдут? - person Hanky Panky; 21.10.2013