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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
一个可查询所有表的“通用”查询分页类
Oct 09 PHP
mysql limit查询优化分析
Nov 12 PHP
如何使用php判断所处服务器操作系统的类型
Jun 20 PHP
PHP获取MAC地址的具体实例
Dec 13 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
Thinkphp调用Image类生成缩略图的方法
Mar 07 PHP
PHP类相关知识点实例总结
Sep 28 PHP
PHP错误和异常处理功能模块示例
Nov 12 PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 PHP
在php的yii2框架中整合hbase库的方法
Sep 20 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
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
php二分法在IP地址查询中的应用
2008/08/12 PHP
php 无限级 SelectTree 类
2009/05/19 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
angular2使用简单介绍
2016/03/01 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
说一说Python logging
2016/04/15 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
python文件操作seek()偏移量,读取指正到指定位置操作
2020/07/05 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
食堂个人先进事迹
2014/01/22 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
售票员岗位职责
2015/02/15 职场文书
纪检监察立案决定书
2015/06/24 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang