PHP数字字符串左侧补0、字符串填充和⾃动补齐的⼏种⽅法
⼀、数字补0.
如果要⾃动⽣成学号,⾃动⽣成某某编号,就像这样的形式“d0000009”、“d0000027”时,那么就会⾯临⼀个问题,怎么把左边⽤0补齐成这样8位数的编码呢?我想到了两种⽅法实现这个功能。
⽅法⼀:
先构造⼀个数字10000000,千万,也就是⼀个1,7个0,然后加上当前的编号(⽐如是3),那么就得到 10000003,⽤字符串截取
substr('10000003',1,7)后就得到0000003,最后在与“d”拼接,就得到了最终的编号d0000003。
源码如下:
<?php
$num = 3;
$temp_num = 10000000;
$new_num = $num + $temp_num;
$real_num = "d".substr($new_num,1,7); //即截取掉最前⾯的“1”
echo$real_num;
>
⽅法⼆:
测出当前编号(⽐如是3)的长度strlen('3')=1,⽤要⽣成编号的总长度减去当前编号长度,得到需要填充0的个数,然后再⽤for循环填充0即可。
源码如下:
<?php
$num = 3;
$bit = 7;//产⽣7位数的数字编号
$num_len = strlen($num);
$zero = '';
for($i=$num_len; $i<$bit; $i++){
$zero .= "0";
}
$real_num = "d".$zero.$num;
echo$real_num;
>
⽅法三:另外⼏种⽅法
<?php
$sourceNumber = "1";
$newNumber = substr(strval($sourceNumber+1000),1,3);
echo "$newNumber";
>
/*这个时候就会出现:001
如果要增加位数的话可以将1000加⼤,然后把3也加⼤。
举例:如果我要补上 "4个0" 第03⾏就要变成这样。*/
<?php
$newNumber = substr(strval($sourceNumber+100000),1,5);
>
/*其实就是总共要显⽰⼏位数字,就把$sourceNumber+1后⾯补上多少个0,最后⼀个数字就直接改成显⽰⼏位数字。*/
/*string str_pad ( string $input, int $pad_length [, string $pad_string [, int $pad_type]] )*/
<?php
$input = "Alien";
echo str_pad($input, 10);
// produces "Alien "
字符串长度0到59echo str_pad($input, 10, "-=", STR_PAD_LEFT);
// produces "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH);
// produces "__Alien___"
echo str_pad($input, 6 , "___");
// produces "Alien_"
>
/*补齐字符串的长度.以pad_string 补.默认补在右边,如果STR_PAD_LEFT就补到左边,STR_PAD_BOTH两边⼀起补。下次⽤str_pad,毕竟是内置的,肯定⽐⾃定义的快。*/ /*
你上⾯的⽅法我觉得不怎么好,介绍⼀下我写的⼀个⽅法。⽅法函数如下,这样当你要的结果001的话,⽅法:dispRepair('1',3,'0')
功能:补位函数
str:原字符串
type:类型,0为后补,1为前补
len:新字符串长度
msg:填补字符
*/
function dispRepair($str,$len,$msg,$type='1') {
$length = $len - strlen($str);
if($length<1)return$str;
if ($type == 1) {
$str = str_repeat($msg,$length).$str;
} else {
$str .= str_repeat($msg,$length);
}
return$str;
}
⼆、字符串填充、⾃动补齐、⾃动补全
遇到要输出⼀定长度字符串的时候,可以使⽤⼀下两种⽅法进⾏PHP字符串⾃动填充、⾃动补全。
⽅法⼀:
$newStr= sprintf('%05s', $str);
sprintf()的功能⾮常灵活,上⾯的格式字符串中,“%05s ”表⽰输出成长度为5的字符串,如果长度不⾜,
左边以零补全;如果写成 “%5s ”,则默认以空格补全;如果希望使⽤其它字符补全,则要在该字符前加上单引号,即形如“%'#5s ”的表⽰以井号补全;最后,如果希望补全发⽣在字符串右边,则在百分号后加上减号,“%-05s ”。
⽅法⼆:
[code]$cd_no = str_pad(++$next_cd_no,8,'#',STR_PAD_LEFT);
str_pad(string,length,pad_string,pad_type):具体⽤法查看⼿册。
string 必需。规定要填充的字符串。
length 必需。规定新字符串的长度。如果该值⼩于原始字符串的长度,则不进⾏任何操作。
pad_string 可选。规定供填充使⽤的字符串。默认是空⽩。
pad_type 可选。规定填充字符串的那边。
这两种⽅法很⽅便的实现了PHP字符串的⾃动补全功能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论