Это три отдельные строки или одна строка с символами новой строки, разделяющими каждое число? При редактировании вашего вопроса я заметил, что у вас есть <br>теги, разделяющие числа; они на самом деле являются частью вашей строки?
Предостережение $ str: = '0'. Адресовано в моем ответе, основанном на этом ответе.
Майк Вейр
зачем усложнять вещи? и майк это $ str + = 0; как объяснено здесь: nabtron.com/kiss-code
Набиль Хан
@NabeelKhan Это не ответило бы на вопрос, который не просит преобразовать строку в целое число. Посмотрите комментарии к ответу Svisstack, чтобы узнать, почему это не такое удачное решение.
Одинокий день
@ loneomeday, вы должны внимательно прочитать его вопрос, где он упоминает: «обратите внимание, что число выше было сгенерировано случайным образом». так что они уже целые числа :)
Я только что попробовал (int) "00009384783473"(случайное число), и мой результат был 2147483647. Однако, если я разыграю его как число с плавающей точкой, это, кажется, работает хорошо Странно
JamesHalsall
Руководство говорит, что «Размер целого числа зависит от платформы, хотя максимальное значение около двух миллиардов является обычным значением (это 32-
битная
1
Не странно Целые числа в php доходят до 2 ^ 31, то есть 2147483647. Для любых больших чисел вам придется использовать решение на основе строк lonesomeday.
AWM
1
Может показаться, что приведение к float работает, но в какой-то момент вы получите ошибки округления.
AWM
1
как насчет идеи оценки каждой строки с помощью оператора цикла, что, когда она получает ненулевую цифру (или строку), она получает индекс этой цифры и удаляет все предшествующие нули, а затем выводит строку, которая начинается с первым ненулевым значением ..
Джеральд
10
Не знаю, почему люди используют такие сложные методы для достижения такой простой вещи! И регулярное выражение? Вот Это Да!
Это кажется более простым решением, но оно не обрабатывает строки любого размера, как это делают другие ответы. Вы преобразуете строку в целое число, а затем возвращаете ее в виде строки - проще просто укоротить строку.
Майк Вейр,
1
Интересно, но я не знаю, является ли это лучшим решением с преобразованиями типов.
jonathanbell
1
Пожалуйста, не делайте этого ... вот почему PHP получает плохую репутацию
Дэн Ф.
9
Аналогично другому предложению, за исключением того, что не уничтожит фактический ноль:
Фон на регулярном выражении: ^сигнализирует начало строки, а +знак сигнализирует о большем или отсутствии предшествующего знака. Следовательно, регулярное выражение ^0+соответствует всем нулям в начале строки.
Аджай Кумар предлагает простейшее эхо + $ numString;
Я использую это:
echo round($val ="0005");
echo $val =0005;//both output 5
echo round($val =00000648370000075845);
echo round($val ="00000648370000075845");//output 648370000075845, no need to care about the other zeroes in the number//like with regex or comparative functions. Works w/wo single/double quotes
На самом деле любая математическая функция возьмет число из «строки» и обработает его так. Это намного проще, чем любые регулярные выражения или сравнительные функции. Я видел это в php.net, не помню где.
<br>
теги, разделяющие числа; они на самом деле являются частью вашей строки?Ответы:
ltrim
:источник
источник
(int) "00009384783473"
(случайное число), и мой результат был 2147483647. Однако, если я разыграю его как число с плавающей точкой, это, кажется, работает хорошо СтранноНе знаю, почему люди используют такие сложные методы для достижения такой простой вещи! И регулярное выражение? Вот Это Да!
Вот, пожалуйста, самый простой и простой способ (как описано здесь: https://nabtron.com/kiss-code/ ):
источник
Аналогично другому предложению, за исключением того, что не уничтожит фактический ноль:
Или, как было предложено (начиная с PHP 5.3), можно использовать сокращенный тернарный оператор:
источник
$str = ltrim($str, '0') ?: '0';
- нет избыточной обрезки вызова.Вы можете добавить «+» в вашей переменной,
пример :
источник
Regex был предложен уже, но не правильно:
вывод тогда:
Фон на регулярном выражении:
^
сигнализирует начало строки, а+
знак сигнализирует о большем или отсутствии предшествующего знака. Следовательно, регулярное выражение^0+
соответствует всем нулям в начале строки.источник
preg_replace() expects at least 3 parameters, 2 given
Я не думаю, что preg_replace - это ответ .. старая ветка, но я просто случайно нашёл это сегодня. Итрим и (int) кастинг - победитель.
источник
Я исправлен таким образом.
это очень просто. только передать строку, удалить нулевое начало строки.
источник
Аджай Кумар предлагает простейшее эхо + $ numString; Я использую это:
На самом деле любая математическая функция возьмет число из «строки» и обработает его так. Это намного проще, чем любые регулярные выражения или сравнительные функции. Я видел это в php.net, не помню где.
источник
Предполагая, что вы хотите удалить запуск из трех или более нулей, и ваш пример - одна строка:
Вы можете сделать шаблон регулярного выражения таким, как вам нужно, если мои предположения не верны.
Это поможет?
источник