Я отправляю запрос curl на freemaptools.com, чтобы найти почтовый индекс в радиусе. Мой код находится ниже
function get_zip_in_radius($lng,$lat,$radius,$a) {
$headers = array(
'Referer:http://www.freemaptools.com/find-zip-codes-inside-radius.htm',
'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36',
'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language:en-US,en;q=0.5',
'Connection:keep-alive',
'Pragma:no-cache',
'Cache-Control:no-cache',
'Origin:http://www.freemaptools.com',
'Content-Type:text/plain; charset=UTF-8'
);
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, 'http://www.freemaptools.com/ajax/get-all-zip-codes-inside.php?mode=9&radius='.$radius.'&lat='.$lat.'&lng='.$lng.'&rn='.$a);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_handle, CURLOPT_HEADER, 1);
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl_handle, CURLOPT_COOKIE, "__utma=126142042.1539287389.1412828292.1412828292.1412828292.1; __utmb=126142042.1.10.1412828292; __utmc=126142042; __utmz=126142042.1412828292.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt=1");
$buffer = curl_exec($curl_handle);
$header_size = curl_getinfo($curl_handle, CURLINFO_HEADER_SIZE);
$body = substr($buffer, $header_size);
curl_close($curl_handle);
$body = strtr($body,array("<"=>"<","&"=>"&")); // for displaying html tags
function get_string($string, $start, $end){
$found = array();
$pos = 0;
while( true )
{
$pos = strpos($string, $start, $pos);
if ($pos === false) { // Zero is not exactly equal to false...
return $found;
}
$pos += strlen($start);
$len = strpos($string, $end, $pos) - $pos;
$found[] = substr($string, $pos, $len);
}
}
return get_string($body,'zipcode="','"');
}
function get_zip()
{ $post=$this->get_zip_in_radius($value[0]->geometry->location->lng,$value[0]->geometry->location->lat,'50','7623');
$post2=$this->get_zip_in_radius($value[0]->geometry->location->lng,$value[0]->geometry->location->lat,'100','6542');
}
Теперь моя проблема заключается в том, что когда я отправляю запрос на два радиуса, один на 50 км, а другой на 100 км, только один запрос отправляет мне ответ, другой — нет. Может кто-нибудь сказать мне, что может быть проблема в моем коде. Пожалуйста, помогите мне. Ваша помощь будет принята с благодарностью. Спасибо заранее.
ценность $value[0]->geometry->location->lng
а также $value[0]->geometry->location->lat
получать из Google API
function get_string($string, $start, $end)
{
$found = array();
$pos = 0;
while( true )
{
$pos = strpos($string, $start, $pos);
if ($pos === false) { // Zero is not exactly equal to false...
return $found;
}
$pos += strlen($start);
$len = strpos($string, $end, $pos) - $pos;
$found[] = substr($string, $pos, $len);
}
return $found;
}
function get_zip_in_radius($lng,$lat,$radius,$a) {
$headers = array(
'Referer:http://www.freemaptools.com/find-zip-codes-inside-radius.htm',
'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36',
'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language:en-US,en;q=0.5',
'Connection:keep-alive',
'Pragma:no-cache',
'Cache-Control:no-cache',
'Origin:http://www.freemaptools.com',
'Content-Type:text/plain; charset=UTF-8'
);
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, 'http://www.freemaptools.com/ajax/get-all-zip-codes-inside.php?mode=9&radius='.$radius.'&lat='.$lat.'&lng='.$lng.'&rn='.$a);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_handle, CURLOPT_HEADER, 1);
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl_handle, CURLOPT_COOKIE, "__utma=126142042.1539287389.1412828292.1412828292.1412828292.1; __utmb=126142042.1.10.1412828292; __utmc=126142042; __utmz=126142042.1412828292.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt=1");
$buffer = curl_exec($curl_handle);
$header_size = curl_getinfo($curl_handle, CURLINFO_HEADER_SIZE);
$body = substr($buffer, $header_size);
curl_close($curl_handle);
$body = strtr($body,array("<"=>"<","&"=>"&")); // for displaying html tagsreturn get_string($body,'zipcode="','"');
}
function get_zip()
{ $post=$this->get_zip_in_radius($value[0]->geometry->location->lng,$value[0]->geometry->location->lat,'50','7623');
$post2=$this->get_zip_in_radius($value[0]->geometry->location->lng,$value[0]->geometry->location->lat,'100','6542');
}
После get_string()
определяя вне get_zip_in_radius()
работает нормально.
Других решений пока нет …