Php 使用文件\u get\u contents()时获取错误消息

Php 使用文件\u get\u contents()时获取错误消息,php,facebook,x-cart,Php,Facebook,X Cart,我收到这样的警告 警告:file_get_contents()[function.file get contents]:流不支持查找 这是密码 $f=file_get_contents('https://api.facebook.com/method/stream.publish?message='.$facebook_message1[0].'%20'.$facebook_message1[1].'%20'.$facebook_message1[2].'%20'.$facebook_messa

我收到这样的警告

警告:file_get_contents()[function.file get contents]:流不支持查找

这是密码

$f=file_get_contents('https://api.facebook.com/method/stream.publish?message='.$facebook_message1[0].'%20'.$facebook_message1[1].'%20'.$facebook_message1[2].'%20'.$facebook_message1[3].'%20'.$facebook_message1[4].'%20'.$facebook_message1[5].'%20'.$facebook_message1[6].'%20'.$facebook_message1[7].'%20'.$facebook_message1[8].'%20'.$facebook_message1[9].'%20'.$facebook_message1[10].'%20'.$facebook_message1[11].'%20'.$facebook_message1[12].'%20'.$facebook_message1[13].'%20'.$facebook_message1[14].'%20'.$facebook_message1[15].'%20'.$facebook_message1[16].'%20'.$facebook_message1[17].'%20'.$facebook_message1[18].'%20'.$facebook_message1[19].'%20'.$facebook_message1[20].'&attachment={"name":"'.$url.'","href":"'.$url.'","caption":"","description":"","media":[{"type":"image","src":"'.$facebook_image.'","href":"'.$cat.'"}]}&uid='.$user_id.'&access_token='.$access_token.'', NULL, NULL, 246);

$fID = substr_replace($f,"",-27);

您已经告诉file_get_contents使用最后一个参数来寻找偏移量246-您无法使用HTTP URL实现这一点。您必须获取整个响应,然后使用

$f = substr($f, 246);

从246开始提取部分。

您当前的问题是您正在使用
file\u get\u contents
的第四个参数。您只需省略该部分,然后用
substr
切断
$f
的相关部分,如下所示:

$f = substr($f, 246);
然而,还有许多其他问题:

  • 处理
    $facebook\u消息的过程非常糟糕。保存您的理智,并使用
    内爆('%20',$facebook\u message)
    而不是手动串接
  • 在代码中使用魔法数字
    246
    -27
    是一个非常糟糕的主意。你是如何产生这些价值观的?显然,它们指的是结果字符串中由某物分隔的一部分,因此,可以通过编写查找分隔符的代码来编写文档。当facebook对其返回值格式进行任何微小更改时,您当前的代码将被破坏,即使这些更改纯粹是技术性的,并且从语义角度看没有任何区别

  • 神圣的连接,蝙蝠侠。。。这段代码很难看。谢谢Marc,它现在为我工作了。我经常用远程URL来做这件事,直到有一个项目失败。在看到这个答案后,我检查了文档,你是对的——文档实际上说它有时可以工作,但不可靠。在我的例子中,我想分块读取数据以保持内存使用率低,所以我切换到FGET,这很好。