php добавить ведущий ноль
str_pad
(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
str_pad — Дополняет строку другой строкой до заданной длины
Описание
Список параметров
Возвращаемые значения
Возвращает дополненную строку.
Примеры
Пример #1 Пример использования str_pad()
User Contributed Notes 27 notes
since the default pad_type is STR_PAD_RIGHT. using STR_PAD_BOTH were always favor in the right pad if the required number of padding characters can’t be evenly divided.
A proper unicode string padder;
len 5: A. A
len 5: Ä. Ä
len 6: A. AO
len 6: Ä. ÄÖ
.
For me this worked.
$string = ‘help’;
#First, str_pad() with unique character.
$string = str_pad($string, 10, «*», STR_PAD_BOTH);
#$string = ‘***help***’;
Using str_repeat, I wrote a full string pad function that should closely mimic str_pad in every other way:
Good example, we want to increment 001 to 002, 003, 004:
Warning: If your string includes non-ascii characters (eg the British pounds sign), str_pad() will treat these as two characters when calculating the padding.
you can use str_pad to display an integer with a fixed amount of digits, like that:
0002
0003
.
0100
sprintf() is not always faster. It certainly scales a lot better then str_pad so when running a benchmark that pads 10k characters, sprintf will come out on top. But if you benchmarked a more real world scenario, it seems str_pad comes out the clear winner.
sprintf ran in 0.015974044799805 milliseconds
str_pad ran in 0.0059604644775391 milliseconds
how to add some 0 before numbers
for example 5 ===> 005
do something like this:
echo str_pad(5,3,0,STR_PAD_LEFT); // result 005
echo str_pad(4,6,0,STR_PAD_LEFT); // result 000005
This is how I pad using :
str_replace(» «, » «, str_pad($foo, 10, » «, STR_PAD_LEFT))
Seems to work well using two tags for each character added, at least for my use. YMMV.
Basically, *all* of you guys have a ‘long’ way of padding text with html tags (which includes ) You dont even have to do a str_replace. try the following code and this will work with ANY html tag there is out there and you don’t have to worry about tag character lengths so on and so forth:
Will produce:
This is pretty interesting! Dont you think?
Fills the first argument (mostly a number, f.e. from a loop to display a date or time) with zeroes.
//result
sprintf ran in 2.0260810852051 milliseconds
str_pad ran in 26.59797668457 milliseconds
Here is the mcinp’s version of mb_str_pad bugfixed:
In case you want to pad 2 strings together with a character you can use:
Php добавить ведущий ноль
Результат выполнения данного примера:
Подробную документацию и примеры использования читайте в разделе декларация типов.
Объявления возвращаемых значений
В PHP 7 добавлена поддержка объявления возвращаемого типа. Аналогично как и объявления типов аргументов, объявление типа возвращаемого значения указывает, значение какого типа должна вернуть функция. Для объявления типа возвращаемого значения доступны все те же типы, что и для объявления типов аргументов.
Результат выполнения данного примера:
Полную документацию и примеры использования читайте в разделе про объявление возвращаемого типа.
Оператор объединения с null
Оператор spaceship (космический корабль)
Определение констант массивов с помощью define()
echo ANIMALS [ 1 ]; // выводит «cat»
?>
Анонимные классы
Результат выполнения данного примера:
Подробную документацию и примеры использования читайте в разделе про анонимные классы.
Синтаксис кодирования Unicode
Он принимает шестнадцатеричный код Unicode и записываем его в формате UTF-8 в двойных кавычках или формате heredoc. Любой корректный код будет принят. Ведущие нули по желанию.
Результат выполнения данного примера:
Closure::call()
Closure::call() является более производительным и коротким способом временного связывания области действия объекта с замыканием и его вызовом.
Результат выполнения данного примера:
unserialize() с фильтрацией
Эта функциональность обеспечивает более высокий уровень безопасности при десериализации объектов с непроверенными данными. Это позволяет предотвратить возможную инъекцию кода, позволяя разработчику использовать белый список классов для десериализации.
IntlChar
Новый класс IntlChar добавляет новую функциональность в ICU. Класс определяет несколько статических методов и констант для манипулирования символами Unicode.
Результат выполнения данного примера:
Для использования это класса необходимо установить модуль Intl.
Ожидания
Вместе тем, что старое API поддерживается, assert() теперь является языковой конструкцией, принимающей первым аргументом выражения, а не только строки ( string ) для оценки или логические значения ( bool ) для проверки.
class CustomError extends AssertionError <>
Результат выполнения данного примера:
Групповые объявления use
// До PHP 7
use some \namespace\ ClassA ;
use some \namespace\ ClassB ;
use some \namespace\ ClassC as C ;
use function some \namespace\ fn_a ;
use function some \namespace\ fn_b ;
use function some \namespace\ fn_c ;
use const some \namespace\ ConstA ;
use const some \namespace\ ConstB ;
use const some \namespace\ ConstC ;
Выражение return в генераторах
= (function() <
yield 1 ;
yield 2 ;
Результат выполнения данного примера:
Возможность явно получать окончательное значение генератора является очень полезной, так как позволяет клиентскому коду, использующему генератор, получать и обработать самое последнее значение генератора, после которого точно ничего больше не будет. Это сильно проще, чем вынуждать разработчика проверять, последнее ли значение вернулось и как-то по особенному его обрабатывать.
Делегация генератора
function gen ()
<
yield 1 ;
yield 2 ;
yield from gen2 ();
>
function gen2 ()
<
yield 3 ;
yield 4 ;
>
Результат выполнения данного примера:
Функция целочисленного деления intdiv()
Новая функция intdiv() производит целочисленное деление операндов и возвращает его результат.
Результат выполнения данного примера:
Опции сессий
Теперь session_start() принимает массив опций, которые переопределят конфигурационные директивы сессии установленные в php.ini.
К примеру, для установки session.cache_limiter равным private и немедленному закрытию сессии после чтения её данных:
preg_replace_callback_array()
Функции CSPRNG
Теперь функция list() всегда может распаковывать объекты, реализующие ArrayAccess
number_format
(PHP 4, PHP 5, PHP 7, PHP 8)
number_format — Форматирует число с разделением групп
Описание
Форматирует число сгруппированными тысячами и, возможно, десятичными цифрами.
Список параметров
Устанавливает разделитель дробной части.
Устанавливает разделитель тысяч.
Возвращаемые значения
Список изменений
Примеры
Пример #1 Пример использования number_format()
Во Франции обычно используются 2 знака после запятой (‘,’), и пробел (‘ ‘) в качестве разделителя групп. Этот пример демонстрирует различные способы форматирования чисел:
Смотрите также
User Contributed Notes 38 notes
It’s not explicitly documented; number_format also rounds:
Outputs a human readable number.
if you want to benchmark all costs for 5 seconds:
(with ms meaning milliseconds and s meaning seconds)
I ran across an issue where I wanted to keep the entered precision of a real value, without arbitrarily rounding off what the user had submitted.
I figured it out with a quick explode on the number before formatting. I could then format either side of the decimal.
You can change %03d to %04d, etc.
See also the documentation for localeconv, which will provide values for decimal point and thousands separator from the C standard library.
Of course localeconv features many more locale information, like indicating to put the negative sign behind the value for some locale settings which can’t be used to customize present number_format.
Simple function to show money as only dollars if no cents, but will show 2 decimals if cents exist.
The ‘cents’ flag can force to never or always show 2 decimals
And remember to always contribute custom functions if they might be useful to the rest of us or future versions of the php language.
Just an observation:
The number_format rounds the value of the variable.
$val1 = 1.233;
$val2 = 1.235;
$val3 = 1.237;
echo number_format($val1,2,»,»,».»); // returns: 1,23
echo number_format($val2,2,»,»,».»); // returns: 1,24
echo number_format($val3,2,»,»,».»); // returns: 1,24
//again check through array for non numerical characters but skipping allready processed keys
//if is not number remove from array
// Here is a function that produces the same output as number_format() but also works with numbers bigger than 2^53.
$original_number= 9223372036854775805;
echo a_number_format($original_number, 4, ‘.’,»‘»,3);
// Outputs: 9’223’372’036’854’775’805.1230
In my function my_number_format() [shown below] there was a bug.
Here is the corrected version:
?>
Thanks to Federico Cassinelli for the bug report.
[EDIT BY danbrown AT php DOT net: The original note follows.]
But I have a problem with that: I want to add commas as thousand separators and change the decimal-separator (this could also be done with str_replace), but I do not want to change the amount of fractional digits!
But since the 2nd argument of number_format is necessary to enter the 3rd and 4th argument, this cannot be done with number_format. You have to change the fractional digits with this function.
But I want that 1234.56 changes into 1.234,56 and 1234.567890123456 changes into 1.234,567890123456
So, I created following function, that doesn’t change the amount of fractional digits:
A simple funtion to format american dollars.
To prevent the rounding that occurs when next digit after last significant decimal is 5 (mentioned by several people below):
What do you do if some of your numbers have decimal places, and some don’t? You can switch between functions, but if you’re building it in a loop, that’s not a good solution. Instead, we have the same as below, with a slight change:
function number_format_unlimited_precision($number,$decimal = ‘.’) <
$broken_number = explode($decimal,$number);
if($broken_number[1]==0) <
return number_format($broken_number[0]);
>else <
return number_format($broken_number[0]).$decimal.$broken_number[1];
>;
>;
formatting numbers may be more easy if u use number_format function.
I also wrote this :
function something($number)
<
$locale = localeconv();
return number_format($number,
$locale[‘frac_digits’],
$locale[‘decimal_point’],
$locale[‘thousands_sep’]);
>
function formats numbers of datetime type,
[ «zaman» ]= «1983-8-28 5:5:5» ;
Don’t forget to specify thousands_sep that default is ‘,’ to another value, otherwise function will return null.
This way, I use my 1st variable for calculations and my 2nd variable for output. I’m sure there are better ways to do it, but this got me back on track.
simpler function to convert a number in bytes, kilobytes.
?>
you may also add others units over PeraBytes when the hard disks will reach 1024 PB 🙂
If you want a number of digits after the point, but not unnecessary zeros.
Eg.
number_format(1.20000,4) = 1.2000
num_format(1.20000,4,0) = 1.2
number_format(1.20000,4) = 1.2000
num_format(1.20000,4,2) = 1.20
number_format(1.23456,4) = 1.2345
num_format(1.23456,4,2) = 1.2345
I’d like to comment to the old notes of «stm555» and «woodynadobhar».
They wrote about «number_format_unlimited_precision()».
I guess many of us need that kind of function, which is the almost same function as number_format but don’t round a number.
Does Anyone know any new solution in a recent PHP version?
If you use space as a separator, it will break on that space in HTML tables.
Furthermore, number_format doesn’t like ‘ ‘ as a fourth parameter. I wrote the following function to display the numbers in an HTML table.
function to convert numbers to words
indian: thousand,lakh,crore
Note: function can only convert nos upto 99 crores
I’m not sure if this is the right place anyway, but «ben at last dot fm»‘s ordinal function can be simplified further by removing the redundant «floor» (the result of floor is still a float, it’s the «%» that’s converting to int) and outer switch.
Note that this version also returns the number with the suffix on the end, not just the suffix.
This is a simple and useful function to convert a byte number in a KB or MB:
if you want as a separator and use windows charset this piece of code may help:
echo convertNumberToWordsForIndia ( «987654321» );
//Output ==> Indian Rupees Ninty Eight Crores Seventy Six Lakhs Fifty Four Thousand Three Hundred & Twenty One Only.
?>
Php добавить ведущий ноль
Синтаксис
Целые числа ( int ) могут быть указаны в десятичной (основание 10), шестнадцатеричной (основание 16), восьмеричной (основание 8) или двоичной (основание 2) системе счисления. Для задания отрицательных целых ( int ) используется оператор отрицания
Начиная с PHP 7.4.0, целочисленные литералы могут содержать подчёркивания ( _ ) между цифрами для лучшей читаемости литералов. Эти подчёркивания удаляются сканером PHP.
Пример #1 Целые числа
Формально структура целых чисел ( int ) соответствует PHP 7.4.0 (ранее подчёркивания не допускались):
Переполнение целых чисел
Пример #2 Переполнение целых на 32-битных системах
Пример #3 Переполнение целых на 64-битных системах
Преобразование в целое
Из булевого типа
Из чисел с плавающей точкой
Если число с плавающей точкой превышает размеры int (обычно +/- 2.15e+9 = 2^31 на 32-битных системах и +/- 9.22e+18 = 2^63 на 64-битных системах, результат будет неопределённым, так как float не имеет достаточной точности, чтобы вернуть верный результат в виде целого числа ( int ). В этом случае не будет выведено ни предупреждения, ни даже замечания!
Значения NaN и Infinity при приведении к int становятся равными нулю, вместо неопределённого значения в зависимости от платформы.
Из строк
Если строка содержит числа или ведущая числовая, тогда она будет преобразована в соответствующее целочисленное значение, в противном случае она преобразуется в ноль ( 0 ).
Из NULL
Значение null всегда преобразуется в ноль ( 0 ).
Из других типов
Для других типов поведение преобразования в int не определено. Не полагайтесь на любое наблюдаемое поведение, так как оно может измениться без предупреждения.
User Contributed Notes 25 notes
Here are some tricks to convert from a «dotted» IP address to a LONG int, and backwards. This is very useful because accessing an IP addy in a database table is very much faster if it’s stored as a BIGINT rather than in characters.
Be aware of float to int cast overflow
// You may expected these
var_dump ( 0x7fffffffffffffff ); // int(9223372036854775807)
var_dump ( 0x7fffffffffffffff + 1 ); // float(9.2233720368548E+18)
var_dump ((int)( 0x7fffffffffffffff + 1 )); // int(9223372036854775807)
var_dump ( 0x7fffffffffffffff + 1 > 0 ); // bool(true)
var_dump ((int)( 0x7fffffffffffffff + 1 ) > 0 ); // bool(true)
var_dump ((int) ‘9223372036854775807’ ); // int(9223372036854775807)
var_dump ( 9223372036854775808 ); // float(9.2233720368548E+18)
var_dump ((int) ‘9223372036854775808’ ); // int(9223372036854775807)
var_dump ((int) 9223372036854775808 ); // int(9223372036854775807)
var_dump((int) «010»); //output 10
Casting to an integer using (int) will always cast to the default base, which is 10.
Casting a string to a number this way does not take into account the many ways of formatting an integer value in PHP (leading zero for base 8, leading «0x» for base 16, leading «0b» for base 2). It will simply look at the first characters in a string and convert them to a base 10 integer. Leading zeroes will be stripped off because they have no meaning in numerical values, so you will end up with the decimal value 10 for (int)»010″.
Converting an integer value between bases using (int)010 will take into account the various ways of formatting an integer. A leading zero like in 010 means the number is in octal notation, using (int)010 will convert it to the decimal value 8 in base 10.
This is similar to how you use 0x10 to write in hexadecimal (base 16) notation. Using (int)0x10 will convert that to the base 10 decimal value 16, whereas using (int)»0x10″ will end up with the decimal value 0: since the «x» is not a numerical value, anything after that will be ignored.
If you want to interpret the string «010» as an octal value, you need to instruct PHP to do so. intval(«010», 8) will interpret the number in base 8 instead of the default base 10, and you will end up with the decimal value 8. You could also use octdec(«010») to convert the octal string to the decimal value 8. Another option is to use base_convert(«010», 8, 10) to explicitly convert the number «010» from base 8 to base 10, however this function will return the string «8» instead of the integer 8.
Casting a string to an integer follows the same the logic used by the intval function:
Returns the integer value of var, using the specified base for the conversion (the default is base 10).
intval allows specifying a different base as the second argument, whereas a straight cast operation does not, so using (int) will always treat a string as being in base 10.
php > var_export((int) «010»);
10
php > var_export(intval(«010»));
10
php > var_export(intval(«010», 8));
8
Форматирование числа с ведущими нулями в PHP
Есть ли для этого функция PHP?
12 ответов
Я хотел бы использовать регулярное выражение для сопоставления числа с определенной длиной и ведущими нулями. Например с длиной числа 6: 000123 //Match 002535 //Match 2654 //No match 000021 //Match Какое регулярное выражение я могу использовать для этого?
В качестве альтернативы вы также можете использовать str_pad :
Чтобы повторить это:
Чтобы получить его:
Это должно сработать
Когда мне нужен 01 вместо 1, для меня сработало следующее:
EDIT ( каким-то образом запрошенный downvotes ), со страницы, связанной выше, вот пример «целых чисел с нулевым заполнением»:
Я не уверен, как интерпретировать комментарий, говорящий «It will never be more than 8 digits», и относится ли он к входу или выходу. Если он ссылается на вывод, вам потребуется дополнительный вызов substr(), чтобы обрезать строку.
Чтобы обрезать первые 8 цифр
Чтобы обрезать последние 8 цифр
Если входные номера всегда содержат 7 или 8 цифр, вы также можете использовать
Я получаю длинный XML от бэкенда. Для дальнейшего использования xml я преобразую его в объект JSON, используя одну из стандартных библиотек XMLtoJSON javascript. Проблема в том, что некоторые значения XML содержат число с ведущими нулями, например: 001072. Проблема в том, что когда библиотека.
Это кажется простым вопросом, но я нигде не могу найти ответа. Если у меня есть целочисленная переменная, как я могу преобразовать ее в строку с ведущими нулями? Я хочу что-то вроде кода ниже: n = 4 string_size = 3 println(fleading(n, string_size)) # result should be 004 Где fleading будет чем-то.
Я написал эту простую функцию для создания этого формата: 01:00:03
Секунды всегда отображаются (даже если они равны нулю). Минуты отображаются, если они больше нуля, или если требуются часы или дни. Часы отображаются, если они больше нуля или если требуются дни. Дни отображаются, если они больше нуля.
Это прекрасно работает:
Вы всегда можете злоупотреблять жонглированием типами:
Похожие вопросы:
Мое требование состоит в том, что я должен пройти 4 или более digits и провалить rest. regex, который я использовал, это: var test = new RegExp(/1<4,100>$/); Однако числа с ведущими нулями.
Я хочу отформатировать число с десятичной точкой в нем с ведущими нулями. Этот >>> ‘3.3’.zfill(5) 003.3 учитывает все цифры и даже десятичную точку. Есть ли функция в python, которая.
Я хотел бы форматировать свои числа с ведущими нулями, когда это необходимо: Пример: 1 >> 01 5 >> 05 10 >> 10 Я уже пробовал это сделать:
Я хотел бы использовать регулярное выражение для сопоставления числа с определенной длиной и ведущими нулями. Например с длиной числа 6: 000123 //Match 002535 //Match 2654 //No match 000021 //Match.
Есть ли способ превратить базовое десятичное число с ведущими нулями в строку в javascript? Похоже, что javascript просто не имеет понятия базового десятичного числа с ведущими нулями. Пример того.
Я получаю длинный XML от бэкенда. Для дальнейшего использования xml я преобразую его в объект JSON, используя одну из стандартных библиотек XMLtoJSON javascript. Проблема в том, что некоторые.
Это кажется простым вопросом, но я нигде не могу найти ответа. Если у меня есть целочисленная переменная, как я могу преобразовать ее в строку с ведущими нулями? Я хочу что-то вроде кода ниже: n = 4.
1.9.3-p551 :016 > 00232.to_i => 154 1.9.3-p551 :017 > 0023.to_i => 19 1.9.3-p551 :024 > 23.to_i => 23 преобразование числа с ведущими нулями в целочисленный тип дает нежелательные.
все! Мне нужно интерпретировать числа, заданные с ведущими нулями в python, как decimal. ( на входе есть числа, а не строки!) Используется Python2, в python3 такой проблемы больше нет. Я понятия не.
Мне нужно извлечь числа с ведущими нулями из смешанных ячеек? Пример содержимого ячейки A1: A1: 0012 SomeText Мне нужны в ячейке B1 только числа с ведущими нулями: B1: 0012 Если я помещу формулу.
- php добавить ведущие нули
- php добавить день к дате