Beispiel
Eine Zeichenfolge analysieren:
<?php $str = "age:30 weight:60kg"; sscanf($str,"age:%d weight:%dkg",$age,$weight); // show types and values var_dump($age,$weight); ?>
Die Funktion sscanf() analysiert die Eingabe einer Zeichenfolge gemäß dem angegebenen Format. Die Funktion sscanf() analysiert eine Zeichenfolge basierend auf einer Formatzeichenfolge in eine Variable.
Wenn dieser Funktion nur zwei Parameter übergeben werden, werden die Daten in Form eines Arrays zurückgegeben. Andernfalls werden bei der Übergabe zusätzlicher Parameter die geparsten Daten in diesen Parametern gespeichert. Wenn die Anzahl der Trennzeichen größer ist als die Anzahl der Variablen, die sie enthalten, tritt ein Fehler auf. Wenn jedoch die Anzahl der Trennzeichen geringer ist als die Anzahl der Variablen, die sie enthalten, enthalten die zusätzlichen Variablen NULL.
Verwandte Funktionen:
printf() – Gibt die formatierte Zeichenfolge
aus sprintf() – Schreibe eine formatierte Zeichenfolge in eine Variable
Syntax
sscanf(string,format,arg1,arg2,arg++)
Parameter | Beschreibung | ||||||||||||
string | Erforderlich. Gibt die Zeichenfolge an, die gelesen werden soll. | ||||||||||||
format | Erforderlich. Gibt das zu verwendende Format an.
| ||||||||||||
arg1 | Optional. Die erste Variable zum Speichern von Daten. | ||||||||||||
arg2 | Optional. Eine zweite Variable zum Speichern der Daten. | ||||||||||||
arg++ | Optional. Die dritte und vierte Variable, die Daten speichert. Und so weiter. |
技术细节
返回值: | 如果只向该函数传递两个参数,数据将以数组的形式返回。否则,如果传递了额外的参数,那么被解析的数据会存储在这些参数中。如果区分符的数目大于包含它们的变量的数目,则会发生错误。不过,如果区分符的数目小于包含它们的变量的数目,则额外的变量包含 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; }
Das obige ist der detaillierte Inhalt vonPHP analysiert Strings in Variablen basierend auf der Format-String-Funktion sscanf(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!