php中sscanf,php中格式化输出函数sscanf,vprintf,fprintf,printf,sprintf,vfprintf,vsprintf

sscanf() 函数

sscanf() 函数根据指定的格式解析来自字符串的输入。 sscanf() 函数基于格式字符串向变量中解析字符串。

如果只向该函数传递两个参数,数据将以数组的形式返回。

$str = "age:30 weight:60kg";

print_r(sscanf($str,"age:%d weight:%dkg")); // Array ( [0] => 30 [1] => 60 )

?>

否则,如果传递了额外的参数,则被解析的数据会存储在这些参数中。

$str = "age:30 weight:60kg";

sscanf($str,"age:%d weight:%dkg",$age,$weight);

echo $age; // 30

echo $weight; // 60

?>

如果区分符的数目大于包含它们的变量的数目,则会发生错误。

// 两个区分符,只有一个变量,提示错误

$str = "age:30 weight:60kg";

sscanf($str,"age:%d weight:%dkg",$age);

echo $age;

echo $weight;

// Warning: sscanf(): Different numbers of variable names and field specifiers in

// Notice: Undefined variable: weight in

?>

不过,如果区分符的数目小于包含它们的变量的数目,则额外的变量包含 NULL。

// 有2个区分符,3个变量

$str = "age:30 weight:60kg";

sscanf($str,"age:%d weight:%dkg",$age,$weight,$abc);

echo $age; // 30

echo $weight; // 60

echo $abc;

// 跟手册说的不一样,提示错误Warning: sscanf(): Variable is not assigned by any conversion specifiers in

?>

语法

sscanf(string,format,arg1,arg2,arg++)

string必需。规定要读取的字符串。

format  必需。规定要使用的格式。

可能的格式值:

%% - 返回一个百分号 %

%c - ASCII 值对应的字符

%d - 包含正负号的十进制数(负数、0、正数)

%e - 使用小写的科学计数法(例如 1.2e+2)

%u - 不包含正负号的十进制数(大于等于 0)

%f - 浮点数

%o - 八进制数

%s - 字符串

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

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

附加的格式值。必需放置在 % 和字母之间(例如 %.2f):

+ (在数字前面加上 + 或 - 来定义数字的正负性。默认地,只有负数做标记,正数不做标记)

' (规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。)

- (左调整变量值)

[0-9] (规定变量值的最小宽度)

.[0-9] (规定小数位数或最大字符串长度)

注释:如果使用多个上述的格式值,它们必须按照上面的顺序使用。

arg1可选。存储数据的第一个变量。

arg2可选。存储数据的第二个变量。

arg++可选。存储数据的第三、四个变量,依此类推。

printf() 函数

printf() 函数输出格式化的字符串。

arg1、arg2、arg++ 参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。

注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 "\$" 组成。请参见示例二。

示例一

使用格式值 %f

$number = 123;

printf("%f",$number); // 123.000000

?>

示例二

使用占位符

$number = 123;

printf("有两位小数:%1\$.2f
没有小数:%1\$u",$number); // 1\$是一个占位符,因为用到2次,所以需要用占位符

// 有两位小数:123.00

// 没有小数:123

?>

示例三

所有可能的格式值的演示

$num1 = 123456789;

$num2 = -123456789;

$char = 50; // ASCII 字符 50 是 2

// 注释:格式值 "%%" 返回百分号

printf("%%b = %b
",$num1); // 二进制数 %b = 111010110111100110100010101

printf("%%c = %c
",$char); // ASCII 字符 %c = 2

printf("%%d = %d
",$num1); // 带符号的十进制数 %d = 123456789

printf("%%d = %d
",$num2); // 带符号的十进制数 %d = -123456789

printf("%%e = %e
",$num1); // 科学计数法(小写) %e = 1.234568e+8

printf("%%E = %E
",$num1); // 科学计数法(大写) %E = 1.234568E+8

printf("%%u = %u
",$num1); // 不带符号的十进制数(正)%u = 123456789

printf("%%u = %u
",$num2); // 不带符号的十进制数(负)%u = 4171510507

printf("%%f = %f
",$num1); // 浮点数(视本地设置) %f = 123456789.000000

printf("%%F = %F
",$num1); // 浮点数(不视本地设置) %F = 123456789.000000

printf("%%g = %g
",$num1); // 短于 %e 和 %f %g = 1.23457e+8

printf("%%G = %G
",$num1); // 短于 %E 和 %f %G = 1.23457E+8

printf("%%o = %o
",$num1); // 八进制数 %o = 726746425

printf("%%s = %s
",$num1); // 字符串 %s = 123456789

printf("%%x = %x
",$num1); // 十六进制数(小写) %x = 75bcd15

printf("%%X = %X
",$num1); // 十六进制数(大写) %X = 75BCD15

printf("%%+d = %+d
",$num1); // 符号说明符(正) %+d = +123456789

printf("%%+d = %+d
",$num2); // 符号说明符(负) %+d = -123456789

?>

示例四

字符串说明符的演示

$str1 = "Hello";

$str2 = "Hello world!";

printf("[%s]
",$str1); // [Hello]

printf("[%8s]
",$str1); // [ Hello] // 不明白

printf("[%-7s]
",$str1); // [Hello ] // 不明白

printf("[%08s]
",$str1); // [000Hello]

printf("[%'*8s]
",$str1); // [***Hello]

printf("[%8.8s]
",$str2); // [Hello wo] // 不明白

?>

fprintf() 函数

fprintf() 函数把格式化的字符串写入指定的输出流(例如:文件或数据库)。(其他与printf一样)

arg1、arg2、arg++ 参数将被插入主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。

注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号后面,由数字和 "\$" 组成。

$number = 123;

$file = fopen("test.txt","w");

fprintf($file,"%f",$number);

// 123.000000被写入到文件 "test.txt"

?>

sprintf() 函数

sprintf() 函数把格式化的字符串写入变量中。(其他与printf一样)

arg1、arg2、++ 参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。

注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符位于 % 符号之后,由数字和 "\$" 组成。

// 把格式化的字符串写入变量$txt中

$number = 123;

$txt = sprintf("%f",$number);

echo $txt; // 123.000000

?>

vfprintf() 函数

vfprintf() 函数把格式化的字符串写到指定的输出流(例如:文件或数据库)。

与 fprintf() 不同,vfprintf() 中的参数位于数组中。数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。

注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 "\$" 组成。<?php

$num1 = 123;

$num2 = 456;

$file = fopen("test.txt","w");

vfprintf($file,"%f%f",array($num1,$num2));

// 123.000000456.000000文本写入到文件"test.txt"中

?>

vprintf() 函数

vprintf() 函数输出格式化的字符串。

与 printf() 不同,vprintf() 中的参数位于数组中。数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。

注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 "\$" 组成。<?php

$num1 = 123;

$num2 = 456;

vprintf("%f%f",array($num1,$num2));

// 123.000000456.000000

?>

vsprintf() 函数

vsprintf() 函数把格式化字符串写入变量中。

与 sprintf() 不同,vsprintf() 中的参数位于数组中。数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。

注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 "\$" 组成。<?php

$num1 = 123;

$num2 = 456;

$txt = vsprintf("%f%f",array($num1,$num2));

echo $txt; // 123.000000456.000000

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值