알찬정보 툰코 개발 트렌드 이슈 코딩

알찬정보 툰코 개발 트렌드 이슈 코딩

  • [php] http_build_query

    hellowsydney8010

    2023년 11월 27일
    미분류
    [php] http_build_query

    주어진 연관(혹은 인덱스) 배열에서 URL 인코드한 쿼리 문자열을 생성합니다.

    string http_build_query ( array $formdata [, string $numeric_prefix [, string $arg_separator ]] )

    formdata

    속성을 가지는 배열이나 객체.

    배열 형식은 간단한 1차원 구조나, 배열의 배열(다른 배열을 포함한 배열)일 수 있습니다.

    numeric_prefix

    기반 배열에 숫자 인덱스가 사용되고 이 인수가 주어지면, 이 인수가 기반 배열의 숫자 인덱스 앞에 덧붙여집니다.

    이는 데이터가 PHP에서 디코드되거나 다른 CGI 어플리케이션을 사용할 때 적합한 변수명을 가지도록 해줍니다.

    arg_separator

    이 인수가 주어지지 않으면, arg_separator.output을 사용합니다

    Example #1 http_build_query()의 간단한 사용법

    <?php
    $data = array(‘foo’=>’bar’,
                  ‘baz’=>’boom’,
                  ‘cow’=>’milk’,
                  ‘php’=>’hypertext processor’);

    echo http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor
    echo http_build_query($data, ”, ‘&amp;’); // foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor
    ?>

    Example #2 http_build_query()와 숫자 인덱스 요소.

    <?php
    $data = array(‘foo’, ‘bar’, ‘baz’, ‘boom’, ‘cow’ => ‘milk’, ‘php’ =>’hypertext processor’);

    echo http_build_query($data) . “\n”;
    echo http_build_query($data, ‘myvar_’);
    ?>

    위 예제의 출력:

    0=foo&1=bar&2=baz&3=boom&cow=milk&php=hypertext+processor

    mybar_0=foo&mybar_1=bar&mybar_2=baz&mybar_3=boom&cow=milk&php=hypertext+processor

    Example #3 http_build_query()와 복잡한 배열

    <?php
    $data = array(‘user’=>array(‘name’=>’Bob Smith’,
                                ‘age’=>47,
                                ‘sex’=>’M’,
                                ‘dob’=>’5/12/1956’),
                  ‘pastimes’=>array(‘golf’, ‘opera’, ‘poker’, ‘rap’),
                  ‘children’=>array(‘bobby’=>array(‘age’=>12,
                                                   ‘sex’=>’M’),
                                    ‘sally’=>array(‘age’=>8,
                                                   ‘sex’=>’F’)),
                  ‘CEO’);

    echo http_build_query($data, ‘flags_’);
    ?>

    출력(읽기 편하도록 줄바꿈 처리):

    user%5Bname%5D=Bob+Smith&user%5Bage%5D=47&user%5Bsex%5D=M&

    user%5Bdob%5D=5%1F12%1F1956&pastimes%5B0%5D=golf&pastimes%5B1%5D=opera&

    pastimes%5B2%5D=poker&pastimes%5B3%5D=rap&children%5Bbobby%5D%5Bage%5D=12&

    children%5Bbobby%5D%5Bsex%5D=M&children%5Bsally%5D%5Bage%5D=8&

    children%5Bsally%5D%5Bsex%5D=F&flags_0=CEO

    <a target=”_blank” href=”http://twitter.com/share?text=<?php echo urlencode(‘[맑시즘 2011]’.$page_title)?>&url=http://<?php echo $_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’]?>&via=marxismTwit” title=”트위터로 퍼가요”>

    이걸 이렇게 만들 수 있다.

    $twitter_query_array = array(

            ‘text’=>'[맑시즘 2011]’.$page_title,

            ‘url’=>’http://’.$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’],

            ‘via’=>’marxismTwit’

    );

    $twitter_query = http_build_query($twitter_query_array);

    <a target=”_blank” href=”http://twitter.com/share?<?php echo $twitter_query?>” title=”트위터로 퍼가요”>

    GET 변수를 직접 쓰는 방식이 아니라 array로 만든 후 <a href=”http://kr.php.net/manual/kr/function.http-build-query.php”>http_build_query</a> 함수를 이용해 변환하는 방식을 사용하면 장점이 있다.

    일단, 위에서 볼 수 있는대로 URL 길이가 줄어든다.

    다음으로, 변수와 값의 쌍이 1줄에 1개씩 들어가는 것으로 관리되므로, SVN 같은 버전관리 시스템에서 관리하기 용이하다.

    알아보기 쉬움은 물론이다.

    마지막으로 한글이나 특수문자가 들어가는 경우 <a href=”http://kr.php.net/manual/kr/function.urlencode.php”>urlencode</a> 함수를 사용해 줘야 하는데 알아서 변환해 준다.

    URL함수

    base64_decode : base64 인코드 데이터를 원상태로 디코드한다.

    base64_encode : 데이터를 base64로 인코드한다.

    get_meta_tags : 메타 태그 내용을 배열로 반환한다.

    http_build_query : 인코드한 쿼리 문자열을 생성한다.

    parse_url : url 정보를 배열로 저장하여 구성요소를 반환한다.

    rawurldecode : url 인코드 문자열을 디코드 한다.

    rawurlencode : RFC 1738에 따라 url을 인코드 한다.

    urldecode : 인코딩된 url 문자열을 디코드한다.

    urlencode : 문자열을 url 인코드 한다.

    다음
    이전

    답글 남기기 응답 취소

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Subscribe to Our Newsletter!

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Subscribe Now

Copyright © 2023 Sydney Note

Design by ThemesDNA.com