Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过PHP substr()函数重写/更改前导零的默认删除?_Php_Whitespace_Substr_Removing Whitespace - Fatal编程技术网

如何通过PHP substr()函数重写/更改前导零的默认删除?

如何通过PHP substr()函数重写/更改前导零的默认删除?,php,whitespace,substr,removing-whitespace,Php,Whitespace,Substr,Removing Whitespace,在PHP中,当我们执行substr()时,结果字符串应该类似于0004,PHP会自动删除前导的0s,只给出4 我想避免这种行为。我希望前导零保持在那里。我怎样才能强制执行呢 例如,下面的代码片段打印4 echo substr("100041", 1, 4); 我如何强制它打印0004?谁说的?Php不会删除字符串中的0 无论如何,创建一个自己的函数 <?php function substring($data,$from,$length){ $sub = ""; $

在PHP中,当我们执行
substr()
时,结果字符串应该类似于
0004
,PHP会自动删除前导的
0
s,只给出
4

我想避免这种行为。我希望前导零保持在那里。我怎样才能强制执行呢

例如,下面的代码片段打印
4

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

我如何强制它打印
0004

谁说的?Php不会删除字符串中的0


无论如何,创建一个自己的函数

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

?>

它不会:

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


根据本文,这是一个100%字符串函数。它不会以任何特殊方式处理数字。

您的PHP版本是什么?因为它在PHP7.2中运行良好,“PHP会自动删除前导的
0
s并只给出
4
”——不,它不会。亲自检查:@akshaypjoshi 7.2。这很奇怪。这个代码是否省略了零?只是想知道是否有更多的代码会影响这一点,可能是将值视为整数或其他什么。可以使用
sprintf
stru-pad
;这不是答案。它不能帮助解决OP遇到的问题。或者使用
sprintf(“%08d”,100041)
string(4) "0004"