В PHP, когда мы делаем substr(), так что результирующая строка должна быть чем-то вроде 0004, PHP автоматически удаляет ведущие 0 и просто выдает 4.
Я хочу избежать такого поведения. Я хочу, чтобы ведущие нули остались там. Как я могу добиться этого?
Например, следующий фрагмент печатает 4.
echo substr("100041", 1, 4);
Как заставить его печатать 0004?
0 и дает только 4». - нет, не работает. Убедитесь сами: 3v4l.org/F3DdR@akshaypjoshi 7.2. Это странно.
Пропускает ли этот точный код нули? Просто интересно, есть ли еще код, который влияет на это, может быть, что-то обрабатывает значение как целое число или что-то в этом роде.
@BizzyBob Точный код - $alpha = hexdec(substr($bravo, 6, 4));. Да, hexdec() обрабатывает его как целое число, и да, я печатаю после применения hexdec(). Теперь какое решение. Как мне решить эту проблему? Мне нужен 0003 как результат
Можно использовать sprintf или str_pad; stackoverflow.com/questions/1699958/…






В любом случае создайте собственную функцию ..
<?php
function substring($data,$from,$length){
$sub = "";
$data = str_split($data);
$i = 0;
$l = 1;
foreach($data as $letter){
if ($i >= $from && $l <= $length){
$sub .= $letter;
$l = $l+1;
}
$i = $i+1;
}
return $sub;
}
echo substring("100041", 1, 4);
?>
Или используйте sprintf('%08d', 100041);
Это не так:
var_dump(substr("100041", 1, 4));
string(4) "0004"
Согласно документация это 100% строковая функция. Он не обрабатывает числа каким-либо особым образом.
Какая у вас версия PHP? Потому что он отлично работает в PHP 7.2