>  기사  >  백엔드 개발  >  PHP는 형식 문자열 함수 sscanf()를 기반으로 문자열을 변수로 구문 분석합니다.

PHP는 형식 문자열 함수 sscanf()를 기반으로 문자열을 변수로 구문 분석합니다.

黄舟
黄舟원래의
2017-11-03 09:54:241938검색

문자열 구문 분석:

<?php
$str = "age:30 weight:60kg";
sscanf($str,"age:%d weight:%dkg",$age,$weight);
// show types and values
var_dump($age,$weight);
?>

sscanf() 함수는 지정된 형식에 따라 string의 입력을 구문 분석합니다. sscanf() 함수는 문자열을 형식 문자열을 기반으로 하는 변수로 구문 분석합니다.

이 함수에 두 개의 매개변수만 전달되면 데이터가 배열 형식으로 반환됩니다. 그렇지 않고 추가 매개변수가 전달되면 구문 분석된 데이터가 해당 매개변수에 저장됩니다. 구분 기호의 개수가 이를 포함하는 변수의 개수보다 많으면 오류가 발생합니다. 그러나 구분 기호 수가 이를 포함하는 변수 수보다 적으면 추가 변수에 NULL이 포함됩니다.

관련 함수:

Syntax

sscanf(string,format,arg1,arg2,arg++)

매개변수설명 string필수입니다. 읽을 문자열을 지정합니다. 형식필수입니다. 사용할 형식을 지정합니다. arg1선택사항. 데이터를 저장하는 첫 번째 변수입니다. arg2선택사항. 데이터를 저장하는 두 번째 변수입니다. arg++선택사항. 데이터를 저장하는 세 번째와 네 번째 변수입니다. 등.

技术细节

가능한 형식 값:

  • %% - 퍼센트 기호를 반환합니다. %

  • %c - ASCII 값에 해당하는 문자

  • %d - 더하기 또는 빼기 기호가 포함된 10진수(음수) , 0, 양수)

  • %e - 소문자 과학적 표기법 사용(예: 1.2e+2)

  • %u - 부호 없는 10진수(0보다 크거나 같음)

  • %f - 부동 소수점 수

  • %o - 8진수

  • %s - 문자열

  • %x - 16진수(소문자)

  • %X - 16진수(대문자)

추가 형식 값. %와 문자(예: %.2f) 사이에 배치해야 합니다.

  • + (숫자 앞에 + 또는 -를 추가하여 숫자의 부호를 정의합니다. 기본적으로 음수만 표시되고 양수는 표시 아님)

  • '(패딩으로 사용할 항목을 지정하며 기본값은 공백입니다. 너비 지정자와 함께 사용해야 합니다. 예: %'x20s(패딩으로 "x" 사용))

  • - ( 왼쪽 조정 변수 값)

  • [0-9] (변수 값의 최소 너비 지정)

  • .[0-9] (소수점 자릿수 또는 최대 문자열 길이 지정)

Comments: 위의 형식 값을 여러 개 사용하는 경우 위의 순서대로 사용해야 하며 중단될 수 없습니다.

返回值: 如果只向该函数传递两个参数,数据将以数组的形式返回。否则,如果传递了额外的参数,那么被解析的数据会存储在这些参数中。如果区分符的数目大于包含它们的变量的数目,则会发生错误。不过,如果区分符的数目小于包含它们的变量的数目,则额外的变量包含 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.