2006-11-30

写自己的 http_build_query

Views: 17032 | Add Comments

我们知道, PHP的 parse_str() 函数可以将 URL Query 格式的字符串解析成关联数组, 与PHP生成 $_GET 使用的相同的策略. parse_str() 的"反函数"是 http_build_query(), 它将关联数组和对象生成 URL Query 字符串. 不过, 只在PHP5之后才被支持. 所以, 我们需要编写自己的 http_build_query()

function my_http_build_query($data){
	$str = '';
	foreach($data as $key=>$value){
		foreach(child_str($value) as $v){
			$str .= "$key$v&";
		}
	}
	return substr($str, 0, strlen($str)-1);
}

function child_str($data){
	$str = array();
	if(is_array($data)){
		foreach($data as $key=>$value){
			foreach(child_str($value) as $v){
				$str[] = "[$key]$v";
			}
		}
	}else{
		// do url encoding here
		$data = str_replace('&', '%26', '='.$data);
		$str[] = $data;
	}
	return $str;
}

Related posts:

  1. 史上最强大的PHP MySQL操作类
  2. PHP 用 curl 读取 HTTP chunked 数据
  3. 如何让 PHP json_encode 函数不转义中文?
  4. HTTP POST using PHP cURL
  5. PHP 解码 C 字符串
Posted by ideawu at 2006-11-30 17:36:08

Leave a Comment