1

このような警告メッセージが表示されます

警告: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);
4

2 に答える 2

2

差し迫った問題は、の4番目のパラメーターを使用していることですfile_get_contents。次のように、それを省略して、後で$fwithの関連部分を切り取る必要があります。substr

$f = substr($f, 246);

ただし、他にも多くの問題があります。

  1. の取り扱い$facebook_messageはひどいです。正気を保存implode('%20', $facebook_message)し、手動の文字列連結の代わりに使用します。
  2. 246マジックナンバーと-27コードを使用するのは本当に悪い考えです。これらの値をどのように作成しましたか?明らかに、それらは何かで区切られた結果文字列の一部を参照しているので、区切り文字を見つけるコードを記述してそれを文書化します。現在のコードは、Facebookが戻り値の形式に小さな変更を加えた瞬間に壊れます。たとえその変更が純粋に技術的なものであり、セマンティックの観点からは違いがない場合でもです。
于 2011-10-21T14:47:24.187 に答える
1

file_get_contentsに、その最後の引数で246をオフセットするように指示しました。HTTPURLではこれを行うことはできません。応答全体をフェッチしてから、

$f = substr($f, 246);

246以降の部分を抽出します。

于 2011-10-21T14:47:22.527 に答える