0
$ch = curl_init("http://acrs.bboxpr.com/getAddress.php?lat=35.545112&lng=-90.657635");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$address = curl_exec($ch);       
curl_close($ch);

//prints the address
echo $address;

//$token = strtok($address, ",");
//$phaddress=array();
//while ($token != null)
//{
//array_push($phaddress,$token);
//$token = strtok(",");
//}
//print_r($phaddress); //blank

该行将echo $address;打印页面中的内容,但如果我取消注释下面的代码(以: 开头的代码$token=strtok),$address 将看起来是空的。我添加了更多使用 $address 的结果的代码(但我没有在这里包含它),有时会出现在 curl 初始化中调用的站点的源代码。所以我认为 curl 可能需要更长的时间,但我试图在 srtok 之前睡觉,但没有奏效。

4

3 回答 3

2

在您的while循环中,您必须替换$token = strtok(",");$token = strtok($address, ",");

于 2012-04-20T05:43:13.530 回答
0

由于您要从谷歌获取 MAP 信息,我认为您使用了错误的方法,javascript因为这可能更难以解析

你为什么不尝试PHP直接使用

$ch = curl_init("http://maps.google.com/maps/api/geocode/json?latlng=35.545112,-90.657635&sensor=false");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($ch);
curl_close($ch);
$geoOutput = json_decode($return,true);
echo "<pre>" ;

foreach($geoOutput as $key => $data)
{
    if(is_array($data))
    {
        foreach($data as $cKey => $cData)
        {
            var_dump($cData['formatted_address']);
        }
    }
}

输出

string(43) "6724-6916 Bay Ln, Harrisburg, AR 72432, USA"
string(16) "Bolivar, AR, USA"
string(25) "Harrisburg, AR 72432, USA"
string(17) "Poinsett, AR, USA"
string(13) "Arkansas, USA"
于 2012-04-20T07:21:05.267 回答
0

将您的 while 循环更改为:while ($token !== false)

于 2012-04-20T07:49:59.197 回答