使用file_get_contents()时收到错误消息

时间:2011-10-21 14:41:02

标签: php facebook x-cart

我收到像这样的警告消息

警告:file_get_contents()[function.file-get-contents]:stream不支持搜索

这是代码

$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);

2 个答案:

答案 0 :(得分:2)

您当前的问题是您正在使用file_get_contents的第四个参数。你应该简单地省略它,然后用$f切断substr的相关部分,如下所示:

$f = substr($f, 246);

但是,还有许多其他问题:

  1. 处理$facebook_message是残暴的。保存您的理智并使用implode('%20', $facebook_message)而不是手动字符串连接。
  2. 在代码中使用幻数246-27是一个非常糟糕的主意。你是如何产生这些价值的?显然它们引用了由某些东西分隔的结果字符串的一部分,因此通过编写找到分隔符的代码来记录。你的当前代码将打破facebook对其返回值格式进行任何小改动的那一刻,即使这种改变纯粹是技术性的,并且从语义的角度来看也没有区别。

答案 1 :(得分:1)

你已经告诉file_get_contents寻求用最后一个参数来抵消246 - 你不能用HTTP网址来做这件事。您将获取整个响应,然后使用

$f = substr($f, 246);

从246开始提取部分。

相关问题