Http build query

<?php
$data 
= array('user'=>array('name'=>'Bob Smith',
                            
'age'=>47,
                            
'sex'
;     
'pastimes'=>array('golf''opera''poker''rap'),
              
'children'=>array('bobby'=>array('age'=>12,
                 &n.
nbsp;     
'sally'=>array('age'=>8,
                                               
'sex'=>'F')),
              
'CEO');

echo http_build_query($data'flags_');
?>

www.micmap.org

Example 3. http_build_query() with complex arrays


<?php
$data
= array('user'=>array('name'=>'Bob Smith',
                            
'age'=>47,
                            
'sex'=>'M',
    &n.
lor="#007700">,
'opera', 'poker', 'rap'),
              
'children'=>array('bobby'=>array('age'=>12,
                                               
'sex'=>'M''sex'=>'F')),
              
'CEO');

echo http_build_query($data, 'flags_');
?>

this will output : (word wrapped for readability)

user%5Bname%5D=Bob+Smith&user%5Bage%5D=47&user%5Bsex%5D=M& user%5Bdob%5D=5%2F12%2F1956&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

www.phpf1.com

Пример 3. http_build_query() with complex arrays

<?php
$data
= array('user'=>array('name'=>'Bob Smith',
                            
'age'=>47,
                            
'sex'=>'.
0">=>array(
'golf', 'opera', 'poker', 'rap'),
              
'children'=>array('bobby'=>array('age'=>12,
                                               
'sex''sex'=>'F')),
              
'CEO');
                                               
echo
http_build_query($data, 'flags_');
?>

this will output : (word wrapped for readability)

user[name]=Bob+Smith&user[age]=47&user[sex]=M&user[dob]=5%1F12%1F1956&  pastimes[0]=golf&pastimes[1]=opera&pastimes[2]=poker&pastimes[3]=rap&  children[bobby][age]=12&children[bobby][sex]=M&children[sally][age]=8&  children[sally][sex]=F&flags_0=CEO

project.net.ru

(PHP 5)

http_build_query — формирует строку запроса URL на основании переданного ассоциативного массива

string http_build_query ( array $formdata [, string $numeric_prefix [, string $arg_separator ]] )

formdata Может быть массив или объект, содержащий свойства. Может быть простой одномерной структуры, либо массив массивов (который в свою очередь, может содержать другие массивы). Numeric_prefix Если числовые индексы, используемые в базе массива и этот параметр, то она будет prepended для числовых Индекс элемента в массиве только базу. Это означало, чтобы для юридических когда имена переменных данных декодирован PHP или другого CGI приложений позже on.arg_separator arg_separator.output используется в качестве разделителя аргументов, если этот параметр не определен, а затем использоваться.

Пример 1 Simple usage of http_build_query()

   
$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, '', '&amp;'); // foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor

Пример 2 http_build_query() with numerically index elements.

$data = array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php' =>'hypertext processor');  echo http_build_query($data) . "n"; echo http_build_query($data, 'myvar_');

Результат выполнения данного примера:

Пример 3 http_build_query() with complex arrays

$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_');

Замечание: Only the numerically indexed element in the base array «CEO» received a prefix. The other numeric indices, found under pastimes, do not require a string prefix to be legal variable names.

Пример #4 Using http_build_query() with an object

class myClass {  var $foo;  var $baz;   function myClass() {  $this->foo = 'bar';  $this->baz = 'boom';  } }  $data = new myClass();  echo http_build_query($data); // foo=bar&baz=boom

htmlweb.ru

А что, если не баг, а фича?

Однако, у этой особенности работы http_build_query есть и приятная сторона. Можно достаточно просто удалять ненужные параметры из строки запроса таким способом:

$query = ['page' => 2, 'hide' => 6, 'user' => 4, 'section' => 22];  $except = ['hide' => null, 'user' => null];  $new = http_build_query(array_merge($query, $except) );

В результате чего получится строка: page=2&section=22.

evilinside.ru

<?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_');
?>

php.ru

<?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_');
?>

php-manual.webi.ru

This is my own version that I was using for php <=4, hope that will help someone
this can accomplish a few things:
if called w/o parameters will return the current link
if called with the first parameter like:
 param1=a&param2=b
will return a link with the query string containing ONLY what is passed.
if called with the first parameter like:
 &param1=a&param2=b
will return a string with the current query string plus what is passed to the function
this function uses by default PHP_SELF, but if you pass the page will create the link with what you pass.
If pass secure(boolean), will create an https or http.
$url will be the actual domain.  This function will use a global variable if nothing is passed, but feel free to modify it to use the _SERVER variables.
$html is a boolean.  If true will create links with &amp; else just &
<?php
function create_link($query=NULL, $page=NULL, $secure=NULL, $html=NULL, $port=NULL, $url=NULL ){
if($html === NULL) $html = true;
if($url === NULL){
if($secure==true){
$url = $GLOBALS['_cfg']['secure_site'];
} else {
$url = $GLOBALS['_cfg']['url'];
}
}
if($query === NULL) $query = $_SERVER['QUERY_STRING'];
if($port === NULL && isset($_SERVER['BIBIVU-HTTPD'])){
$port === _SERVER_ADMIN_PORT;
}
if((isset($_SERVER['BIBIVU-HTTPD']) || !isset($_COOKIE[session_name()])) && $this->is_crawler()===false){
$query = $query.($query!=''?'&':'').session_name().'='.session_id();
}
if(substr($query,0,1) == '&'){
$query = $this->change_query(substr($query,1));
}
if($page === NULL) $page = $_SERVER['PHP_SELF'];
$page = str_replace('//','/',$page);
if(substr($page,0,1)=='/') $page = substr($page,1);
$newQry = array();
if($query!=''){
parse_str($query, $newQuery);
foreach($newQuery as $key => $item){
$newQry[] = $key.'='.$item;
}
}
if($html){
//I create the URL in HTML
$query = implode('&amp;', $newQry);
} else {
$query = implode('&', $newQry);
}
if(isset($_SERVER['BIBIVU-HTTPD'])){
$host = '';
} elseif(defined('_ADMIN_BIB') && _ADMIN_BIB==1){
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on' && ($secure===NULL || $secure===true )){
$host = 'https://';
} else {
$host = 'http://';
}
if (strrpos($_SERVER['HTTP_HOST'], ':') > 0){
$host .= substr($_SERVER['HTTP_HOST'], 0, strrpos($_SERVER['HTTP_HOST'], ':'));
} else {
$host .= $_SERVER['HTTP_HOST'];
}
} else {
if($secure==true){
$host = 'https://'.$url;
} else {
$host = 'http://'.$url;
}
}
if($port==NULL){
//check the current port used
$port = $_SERVER['SERVER_PORT'];
if($port<=0) $port = 80;
}
if($port!=80 && $port!=443){
$host .=':'.$port;
}
if($page===''){
$ret = $query;
} else {
$ret = $host.'/'.$page.($query!=''?'?'.$query:'');
}
return $ret;
}
function change_query($addto_query, $queryOld = NULL){
// change the QUERY_STRING adding or changing the value passed
if ($queryOld === NULL){
$query1 = $_SERVER['QUERY_STRING'];
} else {
$query1 = $queryOld;
}
parse_str ($query1, $array1);
parse_str ($addto_query, $array2);
$newQuery = array_merge($array1, $array2);

foreach($newQuery as $key => $item){
$newQry[] = $key . '=' . $item;
}

return implode('&', $newQry);
}
?>

www.navioo.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector