sprintf 格式化字符串
好久没写博客了,又遇到自己觉得很傻的问题,格式化字符串还要找下
定义和用法
sprintf() 函数把格式化的字符串写入变量中。
arg1、arg2、++ 参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。
注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符位于 % 符号之后,由数字和 "\$" 组成。请参见例子 2。
提示:相关函数:printf()、 vprintf()、 vsprintf()、 fprintf() 和 vfprintf()
语法
- sprintf(format,arg1,arg2,arg++)
参数 | 描述 |
---|---|
format |
必需。规定字符串以及如何格式化其中的变量。 可能的格式值:
附加的格式值。必需放置在 % 和字母之间(例如 %.2f):
注释:如果使用多个上述的格式值,它们必须按照以上顺序使用。 |
arg1 | 必需。规定插到 format 字符串中第一个 % 符号处的参数。 |
arg2 | 可选。规定插到 format 字符串中第二个 % 符号处的参数。 |
arg++ | 可选。规定插到 format 字符串中第三、四等 % 符号处的参数。 |
技术细节
返回值: | 返回已格式化的字符串。 |
PHP 版本: | 4+ |
更多实例
例子 1
使用格式值 %f:
- <?php
- $number = 123;
- $txt = sprintf("%f",$number);
- echo $txt;
- ?>
例子 2
使用占位符:
- <?php
- $number = 123;
- $txt = sprintf("带两位小数:%1\$.2f
- <br>不带小数:%1\$u",$number);
- echo $txt;
- ?>
例子 3
对所有可能的格式值的演示:
- <?php
- $num1 = 123456789;
- $num2 = -123456789;
- $char = 50; // ASCII 字符 50 是 2
- // 注释:格式值 "%%" 返回百分号
- echo sprintf("%%b = %b",$num1)."<br>"; // 二进制数
- echo sprintf("%%c = %c",$char)."<br>"; // ASCII 字符
- echo sprintf("%%d = %d",$num1)."<br>"; // 带符号的十进制数
- echo sprintf("%%d = %d",$num2)."<br>"; // 带符号的十进制数
- echo sprintf("%%e = %e",$num1)."<br>"; // 科学计数法(小写)
- echo sprintf("%%E = %E",$num1)."<br>"; // 科学计数法(大写)
- echo sprintf("%%u = %u",$num1)."<br>"; // 不带符号的十进制数(正)
- echo sprintf("%%u = %u",$num2)."<br>"; // 不带符号的十进制数(负)
- echo sprintf("%%f = %f",$num1)."<br>"; // 浮点数(视本地设置)
- echo sprintf("%%F = %F",$num1)."<br>"; // 浮点数(不视本地设置)
- echo sprintf("%%g = %g",$num1)."<br>"; // 短于 %e 和 %f
- echo sprintf("%%G = %G",$num1)."<br>"; // 短于 %E 和 %f
- echo sprintf("%%o = %o",$num1)."<br>"; // 八进制数
- echo sprintf("%%s = %s",$num1)."<br>"; // 字符串
- echo sprintf("%%x = %x",$num1)."<br>"; // 十六进制数(小写)
- echo sprintf("%%X = %X",$num1)."<br>"; // 十六进制数(大写)
- echo sprintf("%%+d = %+d",$num1)."<br>"; // 符号说明符(正)
- echo sprintf("%%+d = %+d",$num2)."<br>"; // 符号说明符(负)
- ?>
例子 4
对字符串说明符的演示:
- <?php
- $str1 = "Hello";
- $str2 = "Hello world!";
- echo sprintf("[%s]",$str1)."<br>";
- echo sprintf("[%8s]",$str1)."<br>";
- echo sprintf("[%-8s]",$str1)."<br>";
- echo sprintf("[%08s]",$str1)."<br>";
- echo sprintf("[%'*8s]",$str1)."<br>";
- echo sprintf("[%8.8s]",$str2)."<br>";
- ?>
sprintf 格式化字符串的更多相关文章
- sprintf格式化字符串漏洞(转)
深入解析sprintf格式化字符串漏洞 特征: 如何利用: 可以看到, php源码中只对15种类型做了匹配, 其他字符类型都直接break了,php未做任何处理,直接跳过,所以导致了这个问题: 没做字 ...
- sprintf格式化字符串带来的注入隐患
原文链接:https://paper.seebug.org/386/ 摘要点关键知识点 <?php $input = addslashes("%1$' and 1=1#"); ...
- sprintf格式化字符串安全问题
先看sprintf用法: 定义和用法 sprintf() 函数把格式化的字符串写入变量中. arg1.arg2.++ 参数将被插入到主字符串中的百分号(%)符号处.该函数是逐步执行的.在第一个 % 符 ...
- 迎圣诞,拿大奖活动赛题_SQLi(sprintf格式化字符)
看题目应该就是注入没跑了 先拿正常输入试试,输了admin,admin,结果返回password error!,说明还真的存在admin账户 拿常规注入语句试探一下admin' and 1=1%23, ...
- fmt.Sprintf格式化使用
格式化写法: fmt.Sprintf(格式化样式, 参数列表-) 参数说明: 格式化样式:字符串形式,格式化动词以%开头. 参数列表:多个参数以逗号分隔,个数必须与格式化样式中的动词个数对应,否则运行 ...
- sscanf,sprintf 通过字符串与其它类型进行方便快捷的输入和输出
http://c.biancheng.net/cpp/html/296.html 头文件:#include <stdio.h> sscanf()函数用于从字符串中读取指定格式的数据,其原型 ...
- Qt sprintf_s函数格式化字符串出错
Qt sprintf_s函数格式化字符串出错 问题的出现: 我在VS上用c C++写的跨平台的函数 移植到Qt 上面 出现sprintf_s 函数格式化出错. 开始以为是编码问题 反复查找Qt乱码问 ...
- 使用stringstream格式化字符串
stringstream所在头文件为<sstream> 一般有如下常用功能: 1.安全格式化字符串 stringstream常用来安全的格式化若干个字符串,数值到一个缓冲区, 而不用担心溢 ...
- 详谈Format String(格式化字符串)漏洞
格式化字符串漏洞由于目前编译器的默认禁止敏感格式控制符,而且容易通过代码审计中发现,所以此类漏洞极少出现,一直没有笔者本人的引起重视.最近捣鼓pwn题,遇上了不少,决定好好总结了一下. 格式化字符串漏 ...
随机推荐
- ASPNETPager常用属性(近来用到分页属性)
ASPNETPager常用属性 建议去封装好,然后调用这样比较容易 <webdiyer:aspnetpager id="AspNetPager1" runat="s ...
- Mysql Insert Or Update语法例子
有的时候会需要写一段insert的sql,如果主键存在,则update:如果主键不存在,则insert.Mysql中提供了这样的用法:ON DUPLICATE KEY UPDATE.下面就看看它是如何 ...
- MYSQL处理高并发,防止库存超卖(图解)
抢购场景完全靠数据库来扛,压力是非常大的,我们在最近的一次抢购活动改版中,采用了redis队列+mysql事务控制的方案,画了个简单的流程图: 先来就库存超卖的问题作描述:一般电子商务网站都会遇到如团 ...
- Centos搭建Groovy开发环境
背景 临时接到需求,要帮兄弟团队跑一点线上的数据,据说很急.于是拿出了许久不用的Spring-Boot.可是,可是,死活启动有问题,心累了.其实一般写脚本就是在Boot用Groovy写好,然后放到线上 ...
- day 13 课后作业
# -*- coding: utf-8 -*-# @Time : 2019/1/7 18:00# @Author : Endless-cloud# @Site : # @File : day 13 课 ...
- D02——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D02 20180801内容纲要: 1 字符串的系列操作 2 集合 3 文件的读写 4 字符编码转换 5 小结 6 练习:三级菜单(有彩蛋) 1 字符串的系列操 ...
- 「PKUWC2018」Slay the Spire
题目链接 题意分析 这个题其实不是期望 就是一共有\(C_{2n}^m\)种情况 每一种情况选择\(k\)张牌 然后求最大攻击值的总和 我们考虑 当前抽出了选出了\(i\)张强化牌 \(m-i\)张攻 ...
- 钉钉机器人集成Jenkins推送消息模板自定义发送报告
一.由于公司同样也使用了钉钉.那么在做Jenkins集成自动化部署的时候,也是可以集成钉钉的. 那种Jenkins下载钉钉插件集成,简单设置就可以完成了.我们今天要做的是,定制化的发送消息. 钉钉推送 ...
- java四行代码实现图片下载
如下: InputStream in = new URL("http://www.updown/thumbnail.jpg).openStream(); Path temp = Paths. ...
- 关于 unsigned long long 于 long long
long long 最大只有19位 : unsigned long long 最大有20位 ,原因牺牲了符合位来换取更大的记录