【问题标题】:curl response cannot be handled after saved in a variable PHP保存在变量 PHP 中后无法处理 curl 响应
【发布时间】:2012-04-20 05:36:28
【问题描述】:
$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 之前睡觉,但没有奏效。

【问题讨论】:

  • 你能显示$address的值是什么
  • 这一行是$address "$token = strtok($address, ",");"已经空了?您可以在此行之后回显 $address... 这是空的吗?
  • 我不知道它是否重要,但 curl init 中的页面使用“d.appendChild(document.createTextNode(variablejs)); document.body.appendChild(d);”此代码用于更新页面的正文。
  • 托比,如果我取消注释 while 循环,即使第一个回显也不会打印任何内容,如果我在下面添加另一个也不会打印任何内容。

标签: php html curl


【解决方案1】:

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

【讨论】:

  • 我这样做了,出现了 500 错误,我尝试了带有 $address 值的 while 循环,例如:$address="12,31231,123123,123,132"; strtok 完成了他的工作。但由于它与“echo”一起使用,我尝试将变量转换为字符串但没有用。
  • url已经更新,你可以看到那个文件的源代码:acrs.bboxpr.com/getAddress.php?lat=35.545112&lng=-90.657635我想把body放在一个变量里。
【解决方案2】:

由于您要从 google 获取 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"

【讨论】:

  • 如何在没有 String(43) 的情况下获得第一个结果?并将其放入变量中?
  • 使用print 而不是var_dump
  • 谢谢!,我按照你说的修改了代码,我认为我在其他代码中遇到的问题是因为 curl 中使用的 URL 包含生成正文的 java-script。跨度>
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2015-12-29
    • 2021-07-13
    相关资源
    最近更新 更多