PHP:变量没有被正确解释?

时间:2011-08-04 20:44:52

标签: php stack-overflow json

我不确定要问什么问题,因为我不确定是什么导致它。

所以这就是发生的事情......

我有一个像这样开始的功能:

function core_stackoverflow_init($obj){
    $options = $obj->options;   
    $options->query = (string)$options->query;
    $options->query = "key=xxxxxxxxxxxxxx&answers=true&body=true&comments=true";

    $fp = fsockopen("api.stackoverflow.com", 80, $errno, $errstr, 30);

    if (!$fp){ 
        echo 'Could not connect to StackOverflow'; return false; 
    }

$out = "GET /1.1/".$options->resource."?".$options->query." HTTP/1.1\r\n";

对于第3行和第4行我echo $options->query时,它们会以同样的方式回响,所以我认为$obj->options->query进来应该可以正常工作。 但是,stackoverflow只在我有第4行(手动重新分配$options->query)时才给我一个完整的响应。我得到一个回复​​stackoverflow,但我没有得到任何评论,如果我移动& body = true,以后,我没有得到身体。但如果我使用第4行,我会得到我所期待的一切。

所以就像第3行被终止或被错误解释一样。

$ obj是由json_decode()组成的,所以我认为可能以某种方式将解码转换为整数或奇怪的东西,这就是为什么你看到我将var转换为(字符串)... 。只是为了确保。

我已经尝试urlencode()并修剪无济于事。

是否有任何特殊字符或者您能想到的东西我可以测试来调试它?

编辑:

当var_dumping变量提到时,存在很大的差异:

string(75) "body=true&answers=true&comments=true&key=XXXXXXXXXXXXXXXXXXXXXX"
string(63) "key=XXXXXXXXXXXXXXXXXXXXXX&answers=true&body=true&comments=true"

所以我对第一个值进行了修剪($ options->查询)并得到相同的响应。

????

1 个答案:

答案 0 :(得分:0)

好吧,我明白了。谢谢你提醒我var_dump。

所以我做了一个bin2hex,所以我可以查看实际的十六进制代码。事实证明,输入已从浏览器变为html_entities。

所以我做了一个html_entity_decode并且它有效。