PHP analysiert Strings in Variablen basierend auf der Format-String-Funktion sscanf()

黄舟
Freigeben: 2023-03-16 22:54:01
Original
1946 Leute haben es durchsucht

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);
?>
Nach dem Login kopieren

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:

Syntax

sscanf(string,format,arg1,arg2,arg++)
Nach dem Login kopieren
ParameterBeschreibung
string Erforderlich. Gibt die Zeichenfolge an, die gelesen werden soll.
formatErforderlich. Gibt das zu verwendende Format an.
参数描述
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++可选。存储数据的第三、四个变量。依此类推。
Mögliche Formatwerte: <🎜><🎜><🎜><🎜>%% – gibt ein Prozentzeichen zurück %<🎜><🎜><🎜><🎜>%c – das Zeichen, das dem ASCII-Wert entspricht< 🎜><🎜><🎜><🎜>%d – Dezimalzahl mit Vorzeichen (negativ, 0, positiv) <🎜><🎜><🎜><🎜>%e – Verwenden Sie die wissenschaftliche Schreibweise in Kleinbuchstaben (z. B. 1.2e +2) <🎜><🎜><🎜><🎜>%u – Dezimalzahl ohne Vorzeichen (größer oder gleich 0) <🎜><🎜><🎜><🎜>%f – Gleitkommazahl<🎜 ><🎜><🎜><🎜>%o – Oktalzahl<🎜><🎜><🎜><🎜>%s – String<🎜><🎜><🎜><🎜>%x – Hexadezimalzahl (untere Großbuchstaben) <🎜><🎜><🎜><🎜>%X - Hexadezimalzahl (Großbuchstaben) <🎜><🎜><🎜><🎜>Zusätzlicher Formatwert . Muss zwischen % und einem Buchstaben (z. B. %.2f) platziert werden: <🎜><🎜><🎜><🎜>+ (Fügen Sie + oder - vor einer Zahl hinzu, um das Vorzeichen der Zahl zu definieren. Standardmäßig nur Es werden nur negative Zahlen markiert, positive Zahlen werden nicht markiert) <🎜><🎜><🎜><🎜>' (gibt an, was als Auffüllung verwendet werden soll, der Standardwert sind Leerzeichen. Es muss mit dem Breitenbezeichner verwendet werden. Beispiel: %'x20s (Verwenden Sie „x“ als Auffüllung)) <🎜><🎜><🎜><🎜>- (Variablenwert nach links anpassen) <🎜><🎜><🎜><🎜>[0-9] ( Geben Sie den minimalen Variablenwert an (Breite) <🎜><🎜><🎜><🎜>.[0-9] (Gibt die Anzahl der Dezimalstellen oder die maximale Zeichenfolgenlänge an) <🎜><🎜><🎜><🎜> Hinweis<🎜>: Wenn mehrere der oben genannten Formatwerte verwendet werden, müssen diese in der oben genannten Reihenfolge verwendet werden und kann nicht gestört werden. <🎜>
arg1Optional. Die erste Variable zum Speichern von Daten.
arg2Optional. 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&#39;ll get 2";
$format = sscanf($str,"%s %s %s %d %s %d %s %s %c");
print_r($format);
?>
Nach dem Login kopieren

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;  
}
Nach dem Login kopieren

PHP analysiert Strings in Variablen basierend auf der Format-String-Funktion sscanf()

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage