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 session 错误
May 21 PHP
php实现简单文件下载的方法
Jan 30 PHP
php实现专业获取网站SEO信息类实例
Apr 02 PHP
PHP使用递归生成文章树
Apr 21 PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 PHP
php实现多城市切换特效
Aug 09 PHP
通过PHP简单实例介绍文件上传
Dec 16 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
PHP实现用session来实现记录用户登陆信息
Oct 15 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
laravel 创建命令行命令的图文教程
Oct 23 PHP
php实现记事本案例
Oct 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
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
理解JS绑定事件
2016/01/19 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
Django的CVB实例详解
2020/02/10 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
CSS3 边框效果
2019/11/04 HTML / CSS
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
幼儿园大班新学期寄语
2014/01/18 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
决心书格式范文
2015/09/23 职场文书
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
详解OpenCV曝光融合
2022/04/29 Python