首頁 > 後端開發 > php教程 > php基於格式字串解析字串到變數中函數sscanf()

php基於格式字串解析字串到變數中函數sscanf()

黄舟
發布: 2023-03-16 22:54:01
原創
1982 人瀏覽過

實例

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++)
登入後複製
arg1arg2arg++

技术细节

參數描述
string必要。規定要讀取的字串。
format必要。規定要使用的格式。

可能的格式值:

  • %% - 傳回百分號%

  • %c - ASCII 值對應的字元

  • %d - 包含正負號的十進位數(負數、0、正數)

  • %e - 使用小寫的科學計數法(例如1.2e+2)

  • %u - 不包含正負號的十進位數(大於等於0)

  • %f -浮點數

  • %o - 八進制數

  • #%s - 字串

  • ##%x - 十六進制數(小寫字母)

  • %X - 十六進位數(大寫字母)

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

  • + (在數字前面加上+ 或- 來定義數字的正負性。預設情況下,只有負數才會做標記,正數不做標記)

  • '(規定使用什麼作為填充,預設是空格。它必須與寬度指定器一起使用。例如:%'x20s(使用"x" 作為填充))

  • - (左調整變數值)

  • [0-9] (規定變數值的最小寬度)

  • .[0-9] (規定小數位數或最大字串長度)

##註解

:如果使用多個上述的格式值,它們必須按照上面的順序使用,不能打亂。

可選。儲存資料的第一個變數。
可選。儲存資料的第二個變數。
可選。儲存資料的第三、四個變數。依此類推。
返回值:如果只向该函数传递两个参数,数据将以数组的形式返回。否则,如果传递了额外的参数,那么被解析的数据会存储在这些参数中。如果区分符的数目大于包含它们的变量的数目,则会发生错误。不过,如果区分符的数目小于包含它们的变量的数目,则额外的变量包含 NULL。
PHP 版本:4.0.1+

更多实例

实例 1

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

<?php
$str = "If you divide 4 by 2 you&#39;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);  
  
    //用法五:取到指定字符为止的字符串。如在下例中,取遇到&#39;+&#39;为止字符串。  
    sscanf("12345+acc","%[^+]",str);  
    printf("用法五\nstr = %s\n",str);  
  
    //用法六:取到指定字符集为止的字符串。如在下例中,取遇到小写字母为止的字符串。  
    sscanf("12345+acc121","%[^a-z]",str);  
    printf("用法六\nstr = %s\n",str);  
    return 0;  
}
登入後複製

php基於格式字串解析字串到變數中函數sscanf()

以上是php基於格式字串解析字串到變數中函數sscanf()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板