PHP sprintf() 函数使用方法详解
发布:smiling 来源: PHP粉丝网 添加日期:2014-03-12 13:29:32 浏览: 评论:0
我们知道sprintf() 函数把格式化的字符串写写入一个变量中,我们经常会看到这类代码了,下面我来介绍sprintf() 函数使用方法,有需要的朋友可参考参考.
用法
sprintf(format,arg1,arg2,arg++)
说明
参数 format 是转换的格式,以百分比符号 ("%") 开始到转换字符结束.下面的可能的 format 值:
•%% - 返回百分比符号
•%b - 二进制数
•%c - 依照 ASCII 值的字符
•%d - 带符号十进制数
•%e - 可续计数法(比如 1.5e+3)
•%u - 无符号十进制数
•%f - 浮点数(local settings aware)
•%F - 浮点数(not local settings aware)
•%o - 八进制数
•%s - 字符串
•%x - 十六进制数(小写字母)
•%X - 十六进制数(大写字母)
arg1, arg2, ++ 等参数将插入到主字符串中的百分号 (%) 符号处.该函数是逐步执行的.在第一个 % 符号中,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推.
我在微信开放平台会看到如下实例代码如下:
- $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
- $fromUsername = $postObj->FromUserName;
- $toUsername = $postObj->ToUserName;
- $keyword = trim($postObj->Content);
- $time = time();
- $msgType = "text";
- $textTpl = "<xml>
- <ToUserName><![CDATA[%s]]></ToUserName>
- <FromUserName><![CDATA[%s]]></FromUserName>
- <CreateTime>%s</CreateTime>
- <MsgType><![CDATA[%s]]></MsgType>
- <Content><![CDATA[%s]]></Content>
- <FuncFlag>0</FuncFlag>
- </xml>";
- if(!emptyempty( $keyword ))
- {
- $contentStr = $this->keyrep($keyword);
- if( emptyempty($contentStr) )
- {
- $contentStr ="你是故意的吧,没文化真可怕";//你是故意的吧,没文化真可怕;
- }
- //$contentStr = @iconv('UTF-8','gb2312',$keyword);
- $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
- echo $resultStr;
- }else{
- $contentStr = '没文化真可怕,居然不会打字!';//$this->keyrep($keyword);
- //$contentStr = @iconv('UTF-8','gb2312',$keyword);
- $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
- echo $resultStr;
- }
上面用到的是xml中了,下面再看一个网友写的例子
实例代码如下:
- <?php
- /**
- * sprintf()函数使用
- * @date 2012-12-17
- * @author cntnn11
- */
- /**
- * 手册定义:函数把格式化的字符串写写入一个变量中.
- * 他的可识别的格式
- * %% - 返回百分比符号
- * %b - 二进制数
- * %c - 依照 ASCII 值的字符
- * %d - 带符号十进制数
- * %e - 科学计数法(比如 1.5e+3)
- * %u - 无符号十进制数
- * %f - 浮点数(local settings aware)
- * %F - 浮点数(not local settings aware)
- * %o - 八进制数
- * %s - 字符串
- * %x - 十六进制数(小写字母)
- * %X - 十六进制数(大写字母)
- * sprintf($str, arg1, arg2, arg3 ...);
- */
- /**
- * 1. %%
- * 把%%替换成%
- */
- $testStr = '测试下%%这个参数.会被替换成什么呢';
- echo sprintf($testStr),'<br/>';
- //-> 测试下%这个参数.会被替换成什么呢;
- //只剩下一个%了
- //看来还真的只是返回一个‘%’.但是实际应用中该怎么用呢?
- //我也不知道~
- echo '<br/><hr/><br/>';
- /**
- * 2. %b
- * 该参数只能替换整型数据.如果是浮点型,那么他只会取整数部分.小数点后边的会忽略
- * 如果是一个非整型数据,那么返回 0
- */
- $testStr = '听说%b会替换成二进制数,真的吗?';
- $arg = '10';
- echo sprintf($testStr, $arg),'<br/>';
- //-> 1010; $arg=10; 真的替换了!
- //-> 101; $arg=4.5
- //-> 0; $arg=str/bool...
- echo '<br/><hr/><br/>';
- /**
- * 3. %c 返回字符编码的ASCII码
- * TIP:[他不是返回ASCII码]
- * $arg接受一个int传入即ASCII的数字值,然后返回该值对应的字符
- */
- $testStr = '我们来测试下 %c : 试试看能返回ASCII码吗';
- $arg = '122';
- echo sprintf($testStr, $arg);
- //-> A; $arg=65;
- //-> z; $arg=122
- echo '<br/><hr/><br/>';
- /**
- * 4. %d 将一段字符里的%d替换成int型
- * TIP:这里可以是任意一个int整型.
- * 如果是一个浮点数据,那么只会替换整数部分
- * 如果是非数字的,那么会替换成0
- */
- $testStr = "这是一个ID,ID号是%d,";
- $arg = '-4';
- echo sprintf($testStr, $arg);
- //-> 4; $arg=4.5
- //-> 0; $arg=[a-zA-Zs];
- echo '<br/><hr/><br/>';
- /**
- * 5. %e 科学计数法
- * TIP:将一段很长很长的int整型数据以科学计数法的形式呈现
- * 同%d,该函数同样会忽略掉小数点后面的,任何非数值数据替换成0
- */
- $testStr = "我很长,有N多位... %e";
- $arg = '46498464654864564642449463699789789313';
- echo sprintf($testStr, $arg);
- //-> 4.649846e+14; $arg=464984646548645.64642449463699789789313
- //-> 0.000000e+0; $arg=asdfasdf;
- echo '<br/><hr/><br/>';
- /**
- * 5. %u - 无符号十进制数
- * 不明白...如果有是负数,他的值不知道是啥值
- */
- $testStr = "我是无符号的十进制数... %u";
- $arg = '456';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
- /**
- * 6. %f - 浮点数(local settings aware)
- * 难道和%d是相反的?
- * 这个会返回一个浮点数,并且小数点后面只有固定的6位
- * 字符串同样为 0 ;
- */
- $testStr = "和那个d有啥区别呢?%f";
- $arg = '456.235645';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
- /**
- * 7. %F - 浮点数(not local settings aware)
- * 难道和%f是相反的?怎么和小f没区别?不会吧
- */
- $testStr = "和那个小写的f有啥区别呢?%F";
- $arg = '12312316.46898';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
- /**
- * 8. %o - 八进制数
- * 同%d一样.只不过参数传入一个八进制数值
- */
- $testStr = "将八进制数替换成十进制的 %o";
- $arg = '8';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
- /**
- * 9. %x - 十六进制数(小写字母)
- * 同%d/%o一样.只不过参数传入一个小写字母的十六进制数值
- */
- $testStr = "将十六进制数替换成十进制的 %o";
- $arg = '456d12';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
- /**
- * 10. %X - 十六进制数(大写字母)
- * 同%d/%o/%x一样.只不过参数传入一个大写字母的十六进制数值
- * 貌似%x %X两个字母大小写没区别...
- */
- $testStr = "将大写字母的十六进制数替换成十进制的 %o";
- $arg = '456D12';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
- /**
- * 11. %s - 字符串
- * 用你传入的字符串替换掉%s
- */
- $string = "这是用来测试的sprintf的字符串( %s ).今天消费了%f元.从西二旗到知春路有%d站.上班";
- $arg = '';
- echo sprintf($string, $arg, 234, 10);
- echo '<br/><hr/><br/>';
- ?>
Tags: sprintf format
相关文章
- ·php中sprintf函数用法详细(2014-03-14)
- ·PHP sprintf()实现格式化输出(2014-03-15)
- ·PHP 是什么?(2013-11-12)
- ·Php.ini文件位置在哪里 Php.ini文件找不到(2013-11-12)
- ·点击浏览器的后退按钮后,所有字段的信息都被清空了?(2013-11-12)
- ·PHP 数据类型(2013-11-12)
- ·php 获取当前脚本的url(2013-11-12)
- ·php技术生成静态页面的实现(2013-11-13)
- ·缺陷月项目启动 披露PHP脚本语言漏洞(2013-11-13)
- ·在PHP中全面阻止SQL注入式攻击(2013-11-13)
- ·php生成随机密码的几种方法(2013-11-13)
- ·PHP中使用FCKeditor2.3.2配置(2013-11-13)
- ·如何使用PHP开发高效的WEB系统(2013-11-13)
- ·php过滤危险html代码(2013-11-13)
- ·php:树形结构的算法(2013-11-13)
- ·php4和php5区别(2013-11-13)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)