我不确定要问什么问题,因为我不确定是什么导致它。
所以这就是发生的事情......
我有一个像这样开始的功能:
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->查询)并得到相同的响应。
????
答案 0 :(得分:0)
好吧,我明白了。谢谢你提醒我var_dump。
所以我做了一个bin2hex,所以我可以查看实际的十六进制代码。事实证明,输入已从浏览器变为html_entities。
所以我做了一个html_entity_decode并且它有效。