加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-12-15 18:05:49 所属栏目:PHP教程 来源:转载
导读: 实例
Parse a string:

登录后复制
sscanf() 函数根据指定的格式解析来自一个字符串的输入。 sscanf() 函数基于格式字符串解析字符串到变量中。
如果只向该函数传递两个参数,数据将以数组

实例

Parse a string:

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

登录后复制

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

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

相关函数:

语法

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

登录后复制

参数

描述

string

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

format

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

可能的格式值:

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

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

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字符串来转换并格式化数据。转换后的结果存于对应的参数内。

成功则返回参数数目PHP字符串变量,失败则返回0。

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

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

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

例子:

#include  
#include  
#include  
  
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;  
}

登录后复制

A}81]O)L0ZF(R({MS1B[3%2.png

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

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!