php里sprintf什么意思,PHP sprintf() 函数使用方法详解

我们知道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 = "

%s

0

";

if(!empty( $keyword ))

{

$contentStr = $this->keyrep($keyword);

if(  empty($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中了,下面再看一个网友写的例子

 代码如下复制代码

/**

*        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),'
';

//-> 测试下%这个参数。会被替换成什么呢;

//只剩下一个%了

//看来还真的只是返回一个‘%’。但是实际应用中该怎么用呢?

//我也不知道~

echo '



';

/**

*    2.    %b

*        该参数只能替换整型数据。如果是浮点型,那么他只会取整数部分。小数点后边的会忽略

*        如果是一个非整型数据,那么返回 0

*/

$testStr    = '听说%b会替换成二进制数,真的吗?';

$arg        = '10';

echo sprintf($testStr, $arg),'
';

//-> 1010;    $arg=10;    真的替换了!

//-> 101;    $arg=4.5

//-> 0;        $arg=str/bool...

echo '



';

/**

*    3.    %c 返回字符编码的ASCII码

*        TIP:[他不是返回ASCII码]

*        $arg接受一个int传入即ASCII的数字值,然后返回该值对应的字符

*/

$testStr    = '我们来测试下 %c : 试试看能返回ASCII码吗';

$arg    = '122';

echo sprintf($testStr, $arg);

//-> A;    $arg=65;

//-> z; $arg=122

echo '



';

/**

*    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 '



';

/**

*    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 '



';

/**

*    5.    %u - 无符号十进制数

*        不明白。。。如果有是负数,他的值不知道是啥值

*/

$testStr    = "我是无符号的十进制数。。。 %u";

$arg        = '456';

echo sprintf($testStr, $arg);

echo '



';

/**

*    6.    %f - 浮点数(local settings aware)

*            难道和%d是相反的?

*                这个会返回一个浮点数,并且小数点后面只有固定的6位

*                字符串同样为 0 ;

*/

$testStr    = "和那个d有啥区别呢?%f";

$arg        = '456.235645';

echo sprintf($testStr, $arg);

echo '



';

/**

*    7.    %F - 浮点数(not local settings aware)

*        难道和%f是相反的?怎么和小f没区别?不会吧

*/

$testStr    = "和那个小写的f有啥区别呢?%F";

$arg        = '12312316.46898';

echo sprintf($testStr, $arg);

echo '



';

/**

*    8.    %o - 八进制数

*        同%d一样。只不过参数传入一个八进制数值

*/

$testStr    = "将八进制数替换成十进制的 %o";

$arg        = '8';

echo sprintf($testStr, $arg);

echo '



';

/**

*    9.    %x - 十六进制数(小写字母)

*        同%d/%o一样。只不过参数传入一个小写字母的十六进制数值

*/

$testStr    = "将十六进制数替换成十进制的 %o";

$arg        = '456d12';

echo sprintf($testStr, $arg);

echo '



';

/**

*    10.    %X - 十六进制数(大写字母)

*        同%d/%o/%x一样。只不过参数传入一个大写字母的十六进制数值

*        貌似%x %X两个字母大小写没区别...

*/

$testStr    = "将大写字母的十六进制数替换成十进制的 %o";

$arg        = '456D12';

echo sprintf($testStr, $arg);

echo '



';

/**

*    11.    %s - 字符串

*        用你传入的字符串替换掉%s

*/

$string    = "这是用来测试的sprintf的字符串( %s )。今天消费了%f元。从西二旗到知春路有%d站。上班";

$arg    = '';

echo sprintf($string, $arg, 234, 10);

echo '



';

?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`sprintf` 函数是一个 C 标准库函数,用于将格式化的数据写入字符串。它的使用非常灵活,可以通过指定格式字符串和参数来进行各种各样的转换操作,比如将数字转换为字符串、格式化输出等。 `sprintf` 函数的原型如下: ```c int sprintf(char *str, const char *format, ...); ``` 其,`str` 参数是指向存储输出字符串的缓冲区的指针,`format` 参数是一个格式控制字符串,用来指定输出的格式,后面的参数是可选的,用来指定输出的数据。返回值是输出字符串的长度,不包括字符串末尾的空字符。 下面是一些 `sprintf` 函数的常见用法: 1. 将整数转换为字符串: ```c int num = 123; char str[10]; sprintf(str, "%d", num); ``` 这将把整数 `num` 转换成字符串并存储在 `str` 。 2. 格式化输出: ```c int num1 = 123; float num2 = 3.14; char str[50]; sprintf(str, "num1 = %d, num2 = %.2f", num1, num2); ``` 这将把整数 `num1` 和浮点数 `num2` 格式化成字符串并存储在 `str` 。 3. 将十六进制数转换为字符串: ```c int num = 0x1a; char str[10]; sprintf(str, "%x", num); ``` 这将把十六进制数 `0x1a` 转换成字符串并存储在 `str` 。 需要注意的是,使用 `sprintf` 函数时需要注意缓冲区的大小,以免发生缓冲区溢出等问题。此外,格式控制字符串的格式化指令需要与后面的数据类型匹配,否则可能会导致错误的输出结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值