“最难不过坚持”
本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作
有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339
- https://jueru.net/
-
- :weixiao:
-
- :shuijiao: :weiqu: :zhenbang: :leng:
-
- :yiwen: :yiwen: :yiwen: :yiwen:
-
- 这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
-
sscanf() 函数
sscanf() 函数根据指定的格式解析来自字符串的输入。 sscanf() 函数基于格式字符串向变量中解析字符串。
如果只向该函数传递两个参数,数据将以数组的形式返回。
<?php $str = "age:30 weight:60kg"; print_r(sscanf($str,"age:%d weight:%dkg")); // Array ( [0] => 30 [1] => 60 ) ?>
否则,如果传递了额外的参数,则被解析的数据会存储在这些参数中。
<?php $str = "age:30 weight:60kg"; sscanf($str,"age:%d weight:%dkg",$age,$weight); echo $age; // 30 echo $weight; // 60 ?>
如果区分符的数目大于包含它们的变量的数目,则会发生错误。
<?php // 两个区分符,只有一个变量,提示错误 $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。
<?php // 有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
<?php $number = 123; printf("%f",$number); // 123.000000 ?>示例二
使用占位符
<?php $number = 123; printf("有两位小数:%1\$.2f<br>没有小数:%1\$u",$number); // 1\$是一个占位符,因为用到2次,所以需要用占位符 // 有两位小数:123.00 // 没有小数:123 ?>示例三
所有可能的格式值的演示
<?php $num1 = 123456789; $num2 = -123456789; $char = 50; // ASCII 字符 50 是 2 // 注释:格式值 "%%" 返回百分号 printf("%%b = %b <br>",$num1); // 二进制数 %b = 111010110111100110100010101 printf("%%c = %c <br>",$char); // ASCII 字符 %c = 2 printf("%%d = %d <br>",$num1); // 带符号的十进制数 %d = 123456789 printf("%%d = %d <br>",$num2); // 带符号的十进制数 %d = -123456789 printf("%%e = %e <br>",$num1); // 科学计数法(小写) %e = 1.234568e+8 printf("%%E = %E <br>",$num1); // 科学计数法(大写) %E = 1.234568E+8 printf("%%u = %u <br>",$num1); // 不带符号的十进制数(正)%u = 123456789 printf("%%u = %u <br>",$num2); // 不带符号的十进制数(负)%u = 4171510507 printf("%%f = %f <br>",$num1); // 浮点数(视本地设置) %f = 123456789.000000 printf("%%F = %F <br>",$num1); // 浮点数(不视本地设置) %F = 123456789.000000 printf("%%g = %g <br>",$num1); // 短于 %e 和 %f %g = 1.23457e+8 printf("%%G = %G <br>",$num1); // 短于 %E 和 %f %G = 1.23457E+8 printf("%%o = %o <br>",$num1); // 八进制数 %o = 726746425 printf("%%s = %s <br>",$num1); // 字符串 %s = 123456789 printf("%%x = %x <br>",$num1); // 十六进制数(小写) %x = 75bcd15 printf("%%X = %X <br>",$num1); // 十六进制数(大写) %X = 75BCD15 printf("%%+d = %+d <br>",$num1); // 符号说明符(正) %+d = +123456789 printf("%%+d = %+d <br>",$num2); // 符号说明符(负) %+d = -123456789 ?>示例四
字符串说明符的演示
<?php $str1 = "Hello"; $str2 = "Hello world!"; printf("[%s]<br>",$str1); // [Hello] printf("[%8s]<br>",$str1); // [ Hello] // 不明白 printf("[%-7s]<br>",$str1); // [Hello ] // 不明白 printf("[%08s]<br>",$str1); // [000Hello] printf("[%'*8s]<br>",$str1); // [***Hello] printf("[%8.8s]<br>",$str2); // [Hello wo] // 不明白 ?>fprintf() 函数
fprintf() 函数把格式化的字符串写入指定的输出流(例如:文件或数据库)。(其他与printf一样)
arg1、arg2、arg++ 参数将被插入主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。
注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号后面,由数字和 "\$" 组成。
<?php $number = 123; $file = fopen("test.txt","w"); fprintf($file,"%f",$number); // 123.000000被写入到文件 "test.txt" ?>
sprintf() 函数
sprintf() 函数把格式化的字符串写入变量中。(其他与printf一样)arg1、arg2、++ 参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。
注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符位于 % 符号之后,由数字和 "\$" 组成。
<?php // 把格式化的字符串写入变量$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 ?>