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 相关文章推荐
dedecms中常见问题修改方法总结
Mar 21 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
PHP中常用的字符串格式化函数总结
Nov 19 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
php实现图片转换成ASCII码的方法
Apr 03 PHP
PHP易混淆知识整理笔记
Sep 24 PHP
Zend Framework入门知识点小结
Mar 19 PHP
php $_SESSION会员登录实例分享
Jan 19 PHP
PHP中__autoload和Smarty冲突的简单解决方法
Apr 08 PHP
php while循环控制的简单实例
May 30 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
Apr 30 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执行速度全攻略(下)
2006/10/09 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
python控制台中实现进度条功能
2015/11/10 Python
python线程池threadpool实现篇
2018/04/27 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
新娘父亲婚礼致辞
2014/01/16 职场文书
市场部管理制度
2014/02/02 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
财务负责人任命书
2014/06/06 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
读群众路线的心得体会
2014/09/03 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
保研导师推荐信
2015/03/25 职场文书
班主任开场白
2015/06/01 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
Java并发编程之Executor接口的使用
2021/06/21 Java/Android