주어진 연관(혹은 인덱스) 배열에서 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, ”, ‘&’); // foo=bar&baz=boom&cow=milk&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 인코드 한다.
답글 남기기