• 技术文章 >后端开发 >php教程

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

    黄舟黄舟2017-11-03 09:54:24原创1036

    实例

    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必需。规定要使用的格式。

    可能的格式值:

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

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

    成功则返回参数数目,失败则返回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;  
    }

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

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 字符串 格式
    上一篇:php把格式化的字符串写入一个变量中函数sprintf() 下一篇:php把CSV字符串解析到数组中的函数str_getcsv()
    Web大前端开发直播班

    相关文章推荐

    • 基于在生产环境中使用php性能测试工具xhprof的详解_php实例• php桌面中心(二) 数据库写入_php实例• 请教在linux下mysql不支持视图吗• 密码是什么啊该如何解决• 请问php高手!关于mongodb的应用有关问题

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网