我们知道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 ="你是故意的吧,没文化真可怕";
- }
-
- $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
- echo $resultStr;
-
- }else{
- $contentStr = '没文化真可怕,居然不会打字!';
-
- $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
- echo $resultStr;
- }
上面用到的是xml中了,下面再看一个网友写的例子
实例代码如下:
- <?php
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $testStr = '测试下%%这个参数.会被替换成什么呢';
- echo sprintf($testStr),'<br/>';
-
-
-
-
- echo '<br/><hr/><br/>';
-
-
-
-
-
- $testStr = '听说%b会替换成二进制数,真的吗?';
- $arg = '10';
- echo sprintf($testStr, $arg),'<br/>';
-
-
-
- echo '<br/><hr/><br/>';
-
-
-
-
-
-
- $testStr = '我们来测试下 %c : 试试看能返回ASCII码吗';
- $arg = '122';
- echo sprintf($testStr, $arg);
-
-
- echo '<br/><hr/><br/>';
-
-
-
-
-
-
- $testStr = "这是一个ID,ID号是%d,";
- $arg = '-4';
- echo sprintf($testStr, $arg);
-
-
- echo '<br/><hr/><br/>';
-
-
-
-
-
-
- $testStr = "我很长,有N多位... %e";
- $arg = '46498464654864564642449463699789789313';
- echo sprintf($testStr, $arg);
-
-
- echo '<br/><hr/><br/>';
-
-
-
-
-
- $testStr = "我是无符号的十进制数... %u";
- $arg = '456';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
-
-
-
-
-
-
-
- $testStr = "和那个d有啥区别呢?%f";
- $arg = '456.235645';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
-
-
-
-
-
- $testStr = "和那个小写的f有啥区别呢?%F";
- $arg = '12312316.46898';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
-
-
-
-
-
- $testStr = "将八进制数替换成十进制的 %o";
- $arg = '8';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
-
-
-
-
-
- $testStr = "将十六进制数替换成十进制的 %o";
- $arg = '456d12';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
-
-
-
-
-
-
- $testStr = "将大写字母的十六进制数替换成十进制的 %o";
- $arg = '456D12';
- echo sprintf($testStr, $arg);
- echo '<br/><hr/><br/>';
-
-
-
-
-
- $string = "这是用来测试的sprintf的字符串( %s ).今天消费了%f元.从西二旗到知春路有%d站.上班";
- $arg = '';
- echo sprintf($string, $arg, 234, 10);
- echo '<br/><hr/><br/>';
-
-
- ?>