function http_parse_query( $array = NULL, $convention = '%s' ){ if( count( $array ) == 0 ){ return ''; } else { if( function_exists( 'http_build_query' ) ){ $query = http_build_query( $array ); } else { $query = ''; foreach( $array as $key => $value ){ if( is_array( $value ) ){ $new_convention = sprintf( $convention, $key ) . '[%s]'; $query .= http_parse_query( $value, $new_convention ); } else { $key = urlencode( $key ); $value = urlencode( $value ); $query .= sprintf( $convention, $key ) . "=$value&"; } } $query = substr($query, 0, mb_strlen($query)-1); } return $query; } }
URL을 분석해서 쿼리스트링을 뽑아낼 수 있는 함수인 parse_url , 쿼리 스트링을 배열로 변환해 주는 함수인 parse_str 과 함께 섞어서 아래처럼 활용할 수 있다.
언어를 변경해 주는 파일이고, 세션과 URL에 언어 정보를 넣어서 한글이면 영어로 영어면 한글로 전환해 준다.
굳이 URL에 lang=en 같은 정보를 넣는 이유는 검색엔진에 대응하기 위해서다.
if($_SESSION['language']=='en'){ $_SESSION['language']='ko'; }else{ $_SESSION['language']='en'; } $parse = parse_url($_SERVER['HTTP_REFERER']); $query_array = array(); if(isset($parse['query'])){ parse_str($parse['query'], $query_array); } $query_array['lang']=$_SESSION['language']; $query_string = http_parse_query($query_array); header('location: '.$parse['path'].'?'.$query_string);