PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法


Posted in PHP onMay 10, 2014

一、数字补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 " 
echo 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字符串的自动补全功能。

PHP 相关文章推荐
php中支持多种编码的中文字符串截取函数!
Mar 20 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 21 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
codeigniter中测试通过的分页类示例
Apr 17 PHP
ThinkPHP中RBAC类的四种用法分析
Nov 24 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
Oct 20 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
微信支付开发发货通知实例
Jul 12 PHP
Yii+upload实现AJAX上传图片的方法
Jul 13 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 PHP
php下获取http状态的实现代码
May 09 #PHP
PHP防范SQL注入的具体方法详解(测试通过)
May 09 #PHP
简单的php新闻发布系统教程
May 09 #PHP
php下载文件源代码(强制任意文件格式下载)
May 09 #PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 #PHP
win7计划任务定时执行PHP脚本设置图解
May 09 #PHP
关于php支持分块与断点续传文件下载功能代码
May 09 #PHP
You might like
php $_SERVER当前完整url的写法
2009/11/12 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
各种快递查询--Api接口
2016/04/26 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
js实现图片实时时钟
2020/01/15 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
Python学习笔记之解析json的方法分析
2017/04/21 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
Python 3 判断2个字典相同
2019/08/06 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
python在不同条件下的输入与输出
2020/02/13 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
申报职称专业技术个人的自我评价
2013/12/12 职场文书
保证书范文大全
2014/04/28 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
校园新闻稿范文
2015/07/18 职场文书
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS