PHP Scan : http_build_query
À 06:56 dans la rubrique PHP / PEAR
←
/ #948
/ rss
/ →
http_build_query est visiblement moins connue qu'on y penserait car beaucoup s'échinent encore à refaire son boulot en PHP.
Depuis PHP 5, http_build_query() génère une chaîne de requête en encodage URL.
http_build_query ( array $formdata , string $numeric_prefix [, string $arg_separator ] )
Le fonctionnement est assez simple et la fonction ci-dessous à utiliser pour les versions antérieures l'explique aussi assez bien.
On a un implode des couples param/valeur eux même séparé par un =.
Depuis 5.1.2, l'implode utilise $arg_separator comme glue, c'est la valeur par défaut est celle de la directive arg-separator configurée dans php.ini
Les éventuelles clés numériques dans la structure du tableau sont préfixées par le second paramètres (vide par défaut).
Un autre traitement à noter : L'ensemble des paramètres et valeurs sont urlencodés et depuis 5.1.3 Les crochets sont échappés.
Avant php 5 on avait ceci
[php]
<?php
if (!function_exists('http_build_query')) {
function http_build_query($data, $prefix='', $sep='', $key='') {
$ret = array();
foreach ((array)$data as $k => $v) {
if (is_int($k) && $prefix != null) {
$k = urlencode($prefix . $k);
}
if ((!empty($key)) || ($key === 0)) $k = $key.'['.urlencode($k).']';
if (is_array($v) || is_object($v)) {
array_push($ret, http_build_query($v, '', $sep, $k));
} else {
array_push($ret, $k.'='.urlencode($v));
}
}
if (empty($sep)) $sep = ini_get('arg_separator.output');
return implode($sep, $ret);
}// http_build_query
}//if
?>








Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire