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);