Согласен с оригинальной постерной вопрос. Чтобы быть очень конкретным:
http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=301+E.+Linwood+Avenue++Turlock%2C+CA
Это требует датчик = ложная переменная передается, или запрос будет возвращать ПЛОХИЕ результаты от Google. Если я прохожу эту строку через file_get_contents, он (PHP file_get_contents) заменяет «&» с "&"
так Google не любит меня:
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
)
Так что это решение, которое я придумал, используя 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()));
Я также включают в себя код (спасибо Марко К.) я нашел на PHP website использовать пользовательскую функцию для 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
Не могли бы вы показать немного больше кода вокруг 'file_get_content()' линии, я подозреваю, ошибка может быть в предыдущей строке. – gnarf
Это происходит со мной! это крона на godaddy? –
То же самое происходит со мной, из 3-х URL-адресов только один производит &, так что невозможно сказать, использовать curl, я хочу решения в рамках этой функции. file_get_contents() .. спасибо – MFarooqi