str_replace - Función PHP para construir cadena de consulta desde matriz
recorrer string php (6)
Estoy buscando el nombre de la función PHP para construir una cadena de consulta a partir de una matriz de pares de valores clave. Tenga en cuenta que estoy buscando la función PHP incorporada para hacer esto, no una función casera (eso es todo lo que parece una búsqueda en google). Hay uno, simplemente no puedo recordar su nombre o encontrarlo en php.net. IIRC su nombre no es tan intuitivo.
Aquí hay una implementación simple amigable para php4:
/**
* Builds an http query string.
* @param array $query // of key value pairs to be used in the query
* @return string // http query string.
**/
function build_http_query( $query ){
$query_array = array();
foreach( $query as $key => $key_value ){
$query_array[] = urlencode( $key ) . ''='' . urlencode( $key_value );
}
return implode( ''&'', $query_array );
}
No conozco una función incorporada, pero existe la clase PECL http://uk.php.net/manual/en/class.httpquerystring.php
Solo como una adición a la respuesta de @thatjuan
.
Una versión PHP4 más compatible de esto:
if (!function_exists(''http_build_query'')) {
if (!defined(''PHP_QUERY_RFC1738'')) {
define(''PHP_QUERY_RFC1738'', 1);
}
if (!defined(''PHP_QUERY_RFC3986'')) {
define(''PHP_QUERY_RFC3986'', 2);
}
function http_build_query($query_data, $numeric_prefix = '''', $arg_separator = ''&'', $enc_type = PHP_QUERY_RFC1738)
{
$data = array();
foreach ($query_data as $key => $value) {
if (is_numeric($key)) {
$key = $numeric_prefix . $key;
}
if (is_scalar($value)) {
$k = $enc_type == PHP_QUERY_RFC3986 ? urlencode($key) : rawurlencode($key);
$v = $enc_type == PHP_QUERY_RFC3986 ? urlencode($value) : rawurlencode($value);
$data[] = "$k=$v";
} else {
foreach ($value as $sub_k => $val) {
$k = "$key[$sub_k]";
$k = $enc_type == PHP_QUERY_RFC3986 ? urlencode($k) : rawurlencode($k);
$v = $enc_type == PHP_QUERY_RFC3986 ? urlencode($val) : rawurlencode($val);
$data[] = "$k=$v";
}
}
}
return implode($arg_separator, $data);
}
}
pero para invertir este trabajo, puedes usar:
void parse_str(str $input, array $output);
//for example:
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output[''first'']; // value
echo $output[''arr''][0]; // foo bar
echo $output[''arr''][1]; // baz
Buena suerte.
Implode combinará una matriz en una cadena para ti, pero para hacer que una consulta SQL genere un par kay / value, tendrás que escribir tu propia función.
Está buscando http_build_query()
.