>백엔드 개발 >PHP 튜토리얼 >PHP는 http_build_query,parse_url,parse_str을 사용하여 URL을 생성하고 구문 분석합니다.

PHP는 http_build_query,parse_url,parse_str을 사용하여 URL을 생성하고 구문 분석합니다.

WBOY
WBOY원래의
2016-07-25 08:46:191002검색

php는 http_build_query,parse_url,parse_str을 사용하여 URL을 생성하고 파싱합니다. 필요한 친구들은 이를 참조할 수 있습니다.


1.http_build_query

http_build_query는 urlencode 다음에 요청 문자열을 생성할 수 있습니다.

  1. string http_build_query ( mix $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
코드 복사



매개변수:
쿼리_데이터
배열이거나 속성을 포함하는 객체일 수 있습니다.

query_data 배열은 단순한 1차원 구조이거나 배열로 구성된 배열(다른 배열을 포함할 수 있음)일 수 있습니다.

query_data가 객체인 경우 공개 속성만 결과에 추가됩니다.

숫자_접두사
기본 배열에서 숫자 첨자를 사용하고 이 매개변수가 제공되면 이 매개변수 값은 기본 배열의 숫자 첨자 요소에 대한 접두어로 사용됩니다.

이는 나중에 데이터를 디코딩할 때 PHP 또는 기타 CGI 프로그램이 유효한 변수 이름을 얻을 수 있도록 하기 위한 것입니다.

arg_separator
이 매개변수를 지정하고 사용하지 않으면 arg_separator.output이 매개변수를 구분하는 데 사용됩니다(이 매개변수는 php.ini에서 사용할 수 있으며 기본값은 "&"입니다).

enc_type
기본적으로 PHP_QUERY_RFC1738이 사용됩니다.

enc_type이 PHP_QUERY_RFC1738인 경우 인코딩은 ? RFC 1738 표준 및 application/x-www-form-urlencoded 미디어 유형을 기반으로 하며 공백은 더하기 기호( )로 인코딩됩니다.

enc_type이 PHP_QUERY_RFC3986인 경우 ? RFC 3986에 따라 인코딩되며 공백은 퍼센트 인코딩( )됩니다.


예시 1: query_data 매개변수만 사용

  1. $data = array(
  2. 'name' => 'fdipzone',
  3. '성별' => '남성',
  4. '직업' => '프로그래머',
  5. '설명' => '새로운 프로그래머'
  6. );
  7. echo http_build_query($data);
  8. ?>
코드 복사

출력:
name=fdipzone&gender=male&profession=programmer&explain=새로운 프로그래머



예시 2: query_data는 1차원 아래 첨자 배열을 사용하며
을 지정합니다. 숫자_접두사=정보_,arg_separator=#,enc_type=PHP_QUERY_RFC3986

  1. $data = array('fdipzone','male','programmer','새 프로그래머');
  2. echo http_build_query($ data, 'info_', '#', PHP_QUERY_RFC3986);
  3. ?>
코드 복사

출력:

  1. info_0=fdipzone#info_1=male#info_2=programmer#info_3=새 프로그래머
코드 복사
2.parse_url

parse_url은 URL을 구문 분석하고 해당 구성 요소를 반환합니다

  1. 혼합된 구문 분석 URL( string $url [, int $comComponent = -1 ] )
코드 복사



매개변수:
URL
구문 분석할 URL, 유효하지 않은 문자는 _

로 대체됩니다.

컴포넌트
URL의 지정된 부분에 대한 문자열을 가져오는 PHP_URL_PATH, PHP_URL_QUERY 또는 PHP_URL_FRAGMENT 중 하나입니다. (PHP_URL_PORT로 지정한 경우를 제외하면 정수값이 반환됩니다.)

반환 값:
parse_url()은 심각하게 부적합한 URL에 대해 FALSE를 반환할 수 있습니다.

반환되는 데이터에는 일반적으로 다음 유형이 포함됩니다.
스킴(예: http), 호스트, 포트, 사용자, 패스, 경로, 쿼리(물음표? 뒤), 조각(해시 기호 # 뒤)


예:

  1. $url = 'http://fdipzone:123456@www.fdipzone.com:80/test/index.php?id=1#tag ';
  2. print_r(parse_url($url));
  3. echoparse_url($url, PHP_URL_SCHEME).PHP_EOL;
  4. echoparse_url($url, PHP_URL_HOST).PHP_EOL;
  5. echopars_url ($url, PHP_URL_PORT).PHP_EOL;
  6. echoparse_url($url, PHP_URL_USER).PHP_EOL;
  7. echoparse_url($url, PHP_URL_PASS).PHP_EOL;
  8. echoparse_url($url, PHP_URL_PATH).PHP_EOL ;
  9. echoparse_url($url, PHP_URL_QUERY).PHP_EOL;
  10. echoparse_url($url, PHP_URL_FRAGMENT).PHP_EOL;
  11. ?>
코드 복사

출력:

  1. 배열
  2. (
  3. [구성표] => http
  4. [호스트] => www.fdipzone.com
  5. [포트] => 80
  6. [사용자] => fdipzone
  7. [pass] => 123456
  8. [경로] => /test/index.php
  9. [쿼리] => id=1
  10. [조각] => 태그
  11. )
  12. http
  13. www.fdipzone.com
  14. 80
  15. fdipzone
  16. 123456
  17. /test/index.php
  18. id= 1
  19. 태그
코드 복사
3.parse_str

parse_str은 문자열을 여러 변수로 구문 분석합니다

  1. void parse_str ( string $str [, array &$arr ] )
코드 복사

str이 URL로 전달된 쿼리 문자열인 경우 이를 변수로 구문 분석하고 현재 범위로 설정합니다.


매개변수:
str
입력 문자열

도착
두 번째 변수 arr이 설정되면 변수는 대신 이 배열에 배열 요소로 저장됩니다.


예시 1: 현재 범위로 확인

  1. $str = 'name=fdipzone&gender=male&profession=programer&explain=새 프로그래머';
  2. parse_str($str);
  3. echo $ name.PHP_EOL;
  4. echo $gender.PHP_EOL;
  5. echo $profession.PHP_EOL;
  6. echo $explain.PHP_EOL;
  7. ?>
코드 복사

출력:

  1. fdipzone
  2. 남성
  3. 프로그래머
  4. 새 프로그래머
코드 복사



예시 2: 결과를 arr 배열에 저장

  1. $str = 'name=fdipzone&gender=male&profession=programer&explain=새 프로그래머';
  2. parse_str($str, $arr);
  3. print_r($arr);
  4. ?>
코드 복사

출력:

  1. 배열
  2. (
  3. [이름] => fdipzone
  4. [성별] => 남성
  5. [직업] => 프로그래머
  6. [설명] => 새로운 프로그래머
  7. )
코드 복사
4. URL의 쿼리 매개변수를 가져와 구문 분석합니다.

먼저 pars_url을 사용하여 쿼리를 가져온 다음 pars_str을 사용하여 매개변수를 구문 분석합니다

  1. $url = 'http://www.fdipzone.com/test/index.php?name=fdipzone&gender=male&profession=programmer&explain=새 프로그래머 ';
  2. $query = parse_url($url, PHP_URL_QUERY);
  3. parse_str($query, $data);
  4. print_r($data);
  5. ?>
코드 복사

출력:

  1. 배열
  2. (
  3. [이름] => fdipzone
  4. [성별] => 남성
  5. [직업] => 프로그래머
  6. [설명] => 새로운 프로그래머
  7. )
코드 복사
PHP, http


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