Acepto el póster original de la pregunta. Para ser muy específico:
http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=301+E.+Linwood+Avenue++Turlock%2C+CA
Esto requiere el sensor = false variable que se pasa, o la consulta devolverá los malos resultados de Google. Si paso esta cadena a través file_get_contents, que (PHP file_get_contents) sustituye a la "&" con "&"
por lo que Google no me gustan:
Array
(
[type] => 2
[message] => file_get_contents(http://maps.googleapis.com/maps/api/geocode/json?address=301 E. Linwood Avenue Turlock, CA&sensor=false) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
)
Así que esta es la solución que se me ocurrió, utilizando http_build_query
$myURL = 'http://maps.googleapis.com/maps/api/geocode/json?';
$options = array("address"=>$myAddress,"sensor"=>"false");
$myURL .= http_build_query($options,'','&');
$myData = file_get_contents($myURL) or die(print_r(error_get_last()));
también incluyo el código (gracias a Marco K.) que encontré en la PHP website utilizar una función personalizada para PHP < 5:
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
Podría mostrar un poco más de código alrededor del 'file_get_content()' línea, sospecho que la error puede estar en una línea anterior. – gnarf
Esto me está pasando a mí también! ¿Es esto un cronjob en godaddy por casualidad? –
sucede lo mismo conmigo, de 3 urls solo uno produce & así que no hay manera de decir usar curl, quiero solución dentro de esta función. file_get_contents() .. gracias – MFarooqi