• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php基于格式字符串解析字符串到变量中函数sscanf()

php 搞代码 3年前 (2022-01-22) 23次浏览 已收录 0个评论

实例

Parse a string:

<?php$str = "age:30 weight:60kg";sscanf($str,"age:%d weight:%dkg",$age,$weight);// show types and valuesvar_dump($age,$weight);?>

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

如果只向该函数传递两个参数,数据将以数组的形式返回。否则,如果传递了额外的参数,那么被解析的数据会存储在这些参数中。如果区分符的数目大于包含它们的变量的数目,则会发生错误。不过,如果区分符的数目小于包含它们的变量的数目,则额外的变量包含 NULL。

相关函数:

  • printf() – 输出已格式化字符串

  • sprintf() – 写入一个已格式化字符串到变量中

语法

sscanf(string,format,arg1,arg2,arg++)
参数 描述
string 必需。规定要读取的字符串。
format 必需。规定要使用的格式。

可能的格式值:

  • %% – 返回一个百分号 %

  • %c – ASCII 值对应的字符

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

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

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

  • %f – 浮点数

  • %o – 八进制数

  • %s – 字符串

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

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

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

  • + (在数字前面加上 + 或 – 来定义数字的正负性。默认情况下,只有负数才做标记,正数不做标记)

  • ' (规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。例如:%'x20s(使用 "x" 作为填充))

  • – (左调整变量值)

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

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

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

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

技术细节

返回值: 如果只向该函数传递两个参数,数据将以数组的形式返回。否则,如果传递了额外的参数,那么被解析的数据会存储在这些参数中。如果区分符的数目大于包含它们的变量的数目,则会发生错误。不过,如果区分符的数目小于包含它们的变量的数目,则额外的变量包含 NULL。
PHP 版本: 4.0.1+

更多实例

实例 1

使用格式值 %s、%d 和 %c:

<?php$str = "If you divide 4 by 2 you'll get 2";$format = sscanf($str,"%s %s %s %d %s %d %s %s %c");print_r($format);?>

sscanf() 的作用:从一个字符串中读进与指定格式相符的数据.

原型: int sscanf (const char *str,const char * format,……..);

说明: sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。转换后的结果存于对应)本文来(源gaodai#ma#com搞@@代~&码*网2

搞代gaodaima码

的参数内。

成功则返回参数数目,失败则返回0。

注意:sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。

大家都知道sscanf是一个很好用的函数,利用它可以从字符串中取出整数、浮点数和字符串等等。它的使用方法简单,特别对于整数和浮点数来说。

这里就举几个经常用到的例子来说明他的用法,便于大家深刻理解他的用法.

例子:

#include<stdio.h>  #include<stdlib.h>  #include<string.h>    int main(){      char str[100];      //用法一:取指定长度的字符串      sscanf("12345","%4s",str);      printf("用法一\nstr = %s\n",str);        //用法二:格式化时间      int year,month,day,hour,minute,second;      sscanf("2013/02/13 14:55:34","%d/%d/%d %d:%d:%d",&year,&month,&day,&hour,&minute,&second);      printf("用法二\ntime = %d-%d-%d %d:%d:%d\n",year,month,day,hour,minute,second);        //用法三:读入字符串      sscanf("12345","%s",str);      printf("用法三\nstr = %s\n",str);        //用法四:%*d 和 %*s 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)      sscanf("12345acc","%*d%s",str);      printf("用法四\nstr = %s\n",str);        //用法五:取到指定字符为止的字符串。如在下例中,取遇到'+'为止字符串。      sscanf("12345+acc","%[^+]",str);      printf("用法五\nstr = %s\n",str);        //用法六:取到指定字符集为止的字符串。如在下例中,取遇到小写字母为止的字符串。      sscanf("12345+acc121","%[^a-z]",str);      printf("用法六\nstr = %s\n",str);      return 0;  }

以上就是php基于格式字符串解析字符串到变量中函数sscanf()的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php基于格式字符串解析字符串到变量中函数sscanf()

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址