sscanf

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

sscanf根據(jù)指定格式解析輸入的字符

說(shuō)明

sscanf(string $str, string $format, mixed &$... = ?): mixed

這個(gè)函數(shù) sscanf() 輸入類似 printf()。 sscanf() 讀取字符串str 然后根據(jù)指定格式format解析, 格式的描述文檔見 sprintf()

指定的格式字符串中的任意空白匹配輸入字符串的任意空白.也就是說(shuō)即使是格式字符串中的一個(gè)制表符 \t 也能匹配輸入 字符串中的一個(gè)單一空格字符

參數(shù)

str

將要被解析的 字符串.

format

The interpreted format for 解析str的格式, 除了以下不同外,其余的見 sprintf()的描述文檔:

  • 函數(shù)不區(qū)分語(yǔ)言地區(qū)
  • F, g, Gb 不被支持.
  • D 表示十進(jìn)制數(shù)字.
  • i stands for integer with base detection.
  • n 代表目前已經(jīng)處理的字符數(shù)。
  • s 遇到任意空格字符時(shí)停止讀取。

...

可以選參數(shù)將以引用方式傳入,它們的值將被設(shè)置為解析匹配的值

返回值

如果僅傳入了兩個(gè)參數(shù)給這個(gè)函數(shù),解析后將返回一個(gè)數(shù)組,否則,如果可選參數(shù)被傳入,這個(gè)函數(shù)將返回被設(shè)置了值的個(gè)數(shù)

如果format存在的子字符串比 str內(nèi)可用的多, -1 將被返回.

范例

示例 #1 sscanf() 例子

<?php
// getting the serial number
list($serial) = sscanf("SN/2350001""SN/%d");
// and the date of manufacturing
$mandate "January 01 2000";
list(
$month$day$year) = sscanf($mandate"%s %d %d");
echo 
"Item $serial was manufactured on: $year-" substr($month03) . "-$day\n";
?>

If optional parameters are passed, the function will return the number of assigned values.

示例 #2 sscanf() - using optional parameters

<?php
// get author info and generate DocBook entry
$auth "24\tLewis Carroll";
$n sscanf($auth"%d\t%s %s"$id$first$last);
echo 
"<author id='$id'>
    <firstname>
$first</firstname>
    <surname>
$last</surname>
</author>\n"
;
?>

參見