PHP:变量未正确解释?
我不确定该问什么问题,因为我不确定是什么原因造成的 下面是正在发生的事情 我有一个函数是这样开始的:PHP:变量未正确解释?,php,stack-overflow,json,Php,Stack Overflow,Json,我不确定该问什么问题,因为我不确定是什么原因造成的 下面是正在发生的事情 我有一个函数是这样开始的: function core_stackoverflow_init($obj){ $options = $obj->options; $options->query = (string)$options->query; $options->query = "key=xxxxxxxxxxxxxx&answers=true&body
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行回显$options->query
时,它们回显为相同的内容,因此我认为$obj->options->query
可以正常工作。
但是,stackoverflow仅在我有第4行时才返回完整响应(手动重新分配$options->query
)。我得到了stackoverflow的回复,但是我没有得到任何评论,如果我将&body=true移到后面,我就不会得到body。但是如果我使用第4行,我会得到我所期望的一切
这就像第3行被终止或被错误地解释
$obj是由一个json_decode()
组成的,所以我想可能是解码把它转换成了一个整数或是一些奇怪的东西,这就是为什么你会看到我把var转换成一个(字符串)…只是为了确定一下
我尝试了urlencode()
,但没有成功
有没有什么特殊的字符或者你能想到的东西,我可以通过测试来调试它
编辑:
当变量提到var_时,有一个很大的区别:
string(75) "body=true&answers=true&comments=true&key=XXXXXXXXXXXXXXXXXXXXXX"
string(63) "key=XXXXXXXXXXXXXXXXXXXXXX&answers=true&body=true&comments=true"
因此,我对第一个值进行了修剪($options->query),并得到了相同的响应
好吧,我想起来了。谢谢你提醒我去var_dump 所以我做了一个bin2hex,这样我就可以看到实际的十六进制代码。结果是输入从浏览器变成了html_实体
所以我做了一个html实体解码,它工作了。当你使用
var\u dump()
第3行或第4行的值时有什么区别吗?就像65Fbef05写的,作为初学者使用var\u dump
。你为什么使用fsockopen()
而不是,比如说,file\u get\u contents()
?@NullUserException:只是因为我设置了一些标题,但我想我可以使用流上下文,我猜这正是我所做的。@65Fbef05,我在上面添加了var_dumps。是什么导致两个相同“字符”的字符串大小不同。