2007年2月2日 09:26
我们知道, Php的 parse_str() 函数可以将 URL Query 格式的字符串解析成关联数组, 与Php生成 $_GET 使用的相同的策略. parse_str() 的"反函数"是 http_build_query(), 它将关联数组和对象生成 URL Query 字符串. 不过, 只在Php5之后才被支持. 所以, 我们需要编写自己的 http_build_query()
此代码由Alacner修改,功能与PHP5下的一样。
此代码由Alacner修改,功能与PHP5下的一样。
function my_http_build_query($formdata ,$numeric_prefix=''){
$str = '';
foreach($formdata as $key=>$value){
$prefix=preg_match("/^\W*\d+\W*$/",$key)?$numeric_prefix:'';
foreach(child_str($value) as $v){
$str .= "{$prefix}{$key}{$v}&";
}
}
return substr($str, 0, strlen($str)-1);
}
function child_str($formdata){
$str = array();
if(is_array($formdata)){
foreach($formdata as $key=>$value){
foreach(child_str($value) as $v){
$str[] = "[$key]$v";
}
}
}else{ // do url encoding here
$formdata = str_replace('&', '%26', '='.urlencode($formdata));
$str[] = $formdata;
}
return $str;
}
$str = '';
foreach($formdata as $key=>$value){
$prefix=preg_match("/^\W*\d+\W*$/",$key)?$numeric_prefix:'';
foreach(child_str($value) as $v){
$str .= "{$prefix}{$key}{$v}&";
}
}
return substr($str, 0, strlen($str)-1);
}
function child_str($formdata){
$str = array();
if(is_array($formdata)){
foreach($formdata as $key=>$value){
foreach(child_str($value) as $v){
$str[] = "[$key]$v";
}
}
}else{ // do url encoding here
$formdata = str_replace('&', '%26', '='.urlencode($formdata));
$str[] = $formdata;
}
return $str;
}







