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+ |
使用格式值%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);?>