Как отменить / изменить удаление начальных нулей по умолчанию функцией PHP substr ()?

В PHP, когда мы делаем substr(), так что результирующая строка должна быть чем-то вроде 0004, PHP автоматически удаляет ведущие 0 и просто выдает 4.

Я хочу избежать такого поведения. Я хочу, чтобы ведущие нули остались там. Как я могу добиться этого?

Например, следующий фрагмент печатает 4.

echo substr("100041", 1, 4); 

Как заставить его печатать 0004?

Какая у вас версия PHP? Потому что он отлично работает в PHP 7.2

akshaypjoshi 02.09.2018 16:15
«PHP автоматически удаляет ведущие 0 и дает только 4». - нет, не работает. Убедитесь сами: 3v4l.org/F3DdR
axiac 02.09.2018 16:16

@akshaypjoshi 7.2. Это странно.

Shy 02.09.2018 16:17

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

BizzyBob 02.09.2018 16:19

@BizzyBob Точный код - $alpha = hexdec(substr($bravo, 6, 4));. Да, hexdec() обрабатывает его как целое число, и да, я печатаю после применения hexdec(). Теперь какое решение. Как мне решить эту проблему? Мне нужен 0003 как результат

Shy 02.09.2018 16:28

Можно использовать sprintf или str_pad; stackoverflow.com/questions/1699958/…

BizzyBob 02.09.2018 16:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
33
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Кто это сказал? Php не удаляет 0 в строке ...

Это не ответ. Это не помогает решить проблему, с которой столкнулся OP.

BizzyBob 02.09.2018 16:36

В любом случае создайте собственную функцию ..

<?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);

BadPiggie 02.09.2018 16:53

Это не так:

var_dump(substr("100041", 1, 4));
string(4) "0004"

(онлайн-демонстрация)

Согласно документация это 100% строковая функция. Он не обрабатывает числа каким-либо особым образом.

Другие вопросы по теме