Accueil > > > HTTP_BUILD_QUERY() POUR PHP 4
HTTP_BUILD_QUERY() POUR PHP 4
Information sur la source
Description
Version PHP 4 de la fonction http_build_query() disponible sous PHP 5 et ma foi bien pratique... .. .
Source
- <?php
-
- // on vérifie quand même que la fonction n'existe pas
- if(!function_exists('http_build_query'))
- {
- function http_build_query( $formdata, $numeric_prefix = '', $arg_separator = null)
- {
- //on vérifie les données
- if(!is_array($formdata) && !is_object($formdata))
- return false;
- elseif(empty($formdata))
- return '';
-
- // si le séparateur n'est pas soumis on prend celui de la config serveur
- if(is_null($arg_separator))
- {
- $arg_separator = @ini_get('arg_separator.output');
-
- if(!$arg_separator)
- $arg_separator = '&';
- }
-
- // création du builder interne qui servira à parcourir récursivement les tableaux et objets
- $builderCore = '$ret = \'\';
-
- foreach ($array as $k => $v)
- {
- if (is_scalar($v))
- $ret .= $name.urlencode(\'[\'.$k.\']\').\'=\'.urlencode($v).$sep;
- else
- {
- $builder = create_function(\' $name, $array, $sep, $builderCore\', $builderCore);
- $ret .= $builder( $name.urlencode(\'[\'.$k.\']\'), $v, $sep, $builderCore).$sep;
- }
- }
- return substr( $ret, 0, -strlen($sep));';
-
- $builder = create_function(' $name, $array, $sep, $builderCore', $builderCore);
-
- // on parcours nos données
- $ret = '';
-
- foreach($formdata as $k => $v)
- {
- if (is_integer($k))
- $k = $numeric_prefix.$k;
-
- if(is_scalar($v))
- {
- $ret .= urlencode($k).'='.urlencode($v).$arg_separator;
- continue;
- }
-
- $ret .= $builder( urlencode($k), $v, $arg_separator, $builderCore).$arg_separator;
- }
-
- // on renvois après avoir enlevé le dernier séparateur
- return substr( $ret, 0, -strlen($arg_separator));
- }
- }
-
-
-
- /*** Exemple d'utilisation ***/
-
- $datas = array(
- 'baz' => 'boom',
- 'cow' => 'milk',
- 'php' => 'hypertext processor',
- 'foo' => array(
- 'bar',
- 'foo'
- ),
- 'pwet',
- 'plop'
- );
-
- $query1 = http_build_query($datas);
- $query2 = http_build_query($datas, '', '&');
- $query3 = http_build_query($datas, 'myVar_');
-
- echo '<fieldset style="width:95%;margin:auto;margin-bottom:15px;">
- <legend>http_build_query($data)</legend>
- http_build_query($datas) :
- <a href="?'.$query1.'">'.htmlentities($query1).'</a>
- <br />
- http_build_query($datas, \'\', \'&\') : <a href="?'.$query2.'">'.htmlentities($query2).'</a>
- <br />
- http_build_query($datas, \'myVar_\') : <a href="?'.$query3.'">'.htmlentities($query3).'</a>
- <br />
- </fieldset>
- <fieldset style="width:95%;margin:auto;margin-bottom:15px;">
- <legend>$datas</legend>
- <pre>
- '.print_r($datas,true).'
- </pre>
- </fieldset>';
-
- if(!empty($_GET))
- echo '<fieldset style="width:95%;margin:auto;margin-bottom:15px;">
- <legend>$_GET</legend>
- <pre>
- '.print_r($_GET,true).'
- </pre>
- </fieldset>';
-
-
- ?>
<?php
// on vérifie quand même que la fonction n'existe pas
if(!function_exists('http_build_query'))
{
function http_build_query( $formdata, $numeric_prefix = '', $arg_separator = null)
{
//on vérifie les données
if(!is_array($formdata) && !is_object($formdata))
return false;
elseif(empty($formdata))
return '';
// si le séparateur n'est pas soumis on prend celui de la config serveur
if(is_null($arg_separator))
{
$arg_separator = @ini_get('arg_separator.output');
if(!$arg_separator)
$arg_separator = '&';
}
// création du builder interne qui servira à parcourir récursivement les tableaux et objets
$builderCore = '$ret = \'\';
foreach ($array as $k => $v)
{
if (is_scalar($v))
$ret .= $name.urlencode(\'[\'.$k.\']\').\'=\'.urlencode($v).$sep;
else
{
$builder = create_function(\' $name, $array, $sep, $builderCore\', $builderCore);
$ret .= $builder( $name.urlencode(\'[\'.$k.\']\'), $v, $sep, $builderCore).$sep;
}
}
return substr( $ret, 0, -strlen($sep));';
$builder = create_function(' $name, $array, $sep, $builderCore', $builderCore);
// on parcours nos données
$ret = '';
foreach($formdata as $k => $v)
{
if (is_integer($k))
$k = $numeric_prefix.$k;
if(is_scalar($v))
{
$ret .= urlencode($k).'='.urlencode($v).$arg_separator;
continue;
}
$ret .= $builder( urlencode($k), $v, $arg_separator, $builderCore).$arg_separator;
}
// on renvois après avoir enlevé le dernier séparateur
return substr( $ret, 0, -strlen($arg_separator));
}
}
/*** Exemple d'utilisation ***/
$datas = array(
'baz' => 'boom',
'cow' => 'milk',
'php' => 'hypertext processor',
'foo' => array(
'bar',
'foo'
),
'pwet',
'plop'
);
$query1 = http_build_query($datas);
$query2 = http_build_query($datas, '', '&');
$query3 = http_build_query($datas, 'myVar_');
echo '<fieldset style="width:95%;margin:auto;margin-bottom:15px;">
<legend>http_build_query($data)</legend>
http_build_query($datas) :
<a href="?'.$query1.'">'.htmlentities($query1).'</a>
<br />
http_build_query($datas, \'\', \'&\') : <a href="?'.$query2.'">'.htmlentities($query2).'</a>
<br />
http_build_query($datas, \'myVar_\') : <a href="?'.$query3.'">'.htmlentities($query3).'</a>
<br />
</fieldset>
<fieldset style="width:95%;margin:auto;margin-bottom:15px;">
<legend>$datas</legend>
<pre>
'.print_r($datas,true).'
</pre>
</fieldset>';
if(!empty($_GET))
echo '<fieldset style="width:95%;margin:auto;margin-bottom:15px;">
<legend>$_GET</legend>
<pre>
'.print_r($_GET,true).'
</pre>
</fieldset>';
?>
Conclusion
Je ne met pas de fichier d'exemple le bout de code ci dessus étant amplement suffisant... .. .
@ tchaOo°
Historique
- 09 mai 2007 15:47:33 :
- Ajout de commentaires et de l'exemple... .. .
- 09 mai 2007 15:49:51 :
- Une petite faute de frappe... .. .
- 09 mai 2007 16:10:39 :
- Correction du nom... je l'avais appelée http_build_query2() pour mes tests... lol... .. . ;o)
- 10 mai 2007 14:58:47 :
- J'ai mis l'exemple d'utilisation dans le champs code pour que l'on profite de l'indentation et de la coloration... .. . ;o)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
formulaire qui rempli un tableau [ par simspid ]
bonjour voila je vais essayer d'expliquer mon problème le mieux possible mon père est président d'un association de tarot pour plus de commodité je l
Problème requête HTTPS [ par newsdas ]
Bonjour à tous les pro. Je travaille depuis peu sur une application web où j'effectue des Requêtes HTTP pour communiquer avec un serveur distant. Je r
Rewrite URL [ par vishwas ]
Bonjour à tous; J'essaye depuis une dizaine d'heures de changer l'url qui apparaît dans la barre de navigation par un fichier htaccess, par exemple;
interrogation bd [ par joujma5 ]
Bonsoir, je travaille sur un projet pour une école, je dois afficher pour chaque enseignant uniquement les classes qui sont sous sa responsabilité mai
URL rewritting [ par tex73 ]
salut à tous! j'ai un site dont les urls sont de la forme: http://www.mondomaine.com/index.php?page=mapage&var1=A&var2=B&var3=C... et je souhaiterai o
[BAR]Musique html [ par Pammachio ]
Bonjour, je suis à la recherche d’un script pour insérer un lecteur de pistes audio sur une page web écrite en html. Parmi les fonctions qui me
[BAR]Question sur facebook [ par Pammachio ]
Salut à tous. Un ami m’a demandé de lui créer plusieurs comptes facebook car il n’y arrive pas (ce n’est pas une bête en informatiqu
liens images xml rss [ par wallysub ]
Bonjour, j'essaye de trouver une solution au probleme d'affichage des images sur le lecteur magpierss. sur certains flux rss (xml) les liens des image
Extraire une donnée d'un objet stocké dans un tableau : comment faire ? [ par slhuilli ]
Bonjour à tous, Je fais du dev depuis 10 en procedural et là je suis en train d'appréhender l'objet avec bcp de mal. Voici ce que j'ai fait et qui fo
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|