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中的超全局变量
Oct 09 PHP
PHP 命令行参数详解及应用
May 18 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
FastCGI 进程意外退出造成500错误
Jul 26 PHP
分享PHP-pcntl 实现多进程代码
Sep 30 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 PHP
使用laravel的migrate创建数据表的方法
Sep 30 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
Feb 07 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
读jQuery之三(构建选择器)
2011/06/11 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
webpack优化的深入理解
2018/12/10 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
OpenCV实现人脸识别
2017/04/07 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
python机器学习实战之树回归详解
2017/12/20 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
使用python实现学生信息管理系统
2021/02/25 Python
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
交通事故赔偿协议书
2014/04/15 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
保外就医申请书范文
2015/08/06 职场文书
如何用python绘制雷达图
2021/04/24 Python