twitter api帖子被切断了

时间:2009-10-15 14:39:00

标签: php api curl twitter

我使用以下代码将更新发布到twitter:

// Set username and password for twitter API
        $username = '***';
        $password = '***';

        // The twitter API address
        $url = 'http://twitter.com/statuses/update.xml';

        // Alternative JSON version
        // $url = 'http://twitter.com/statuses/update.json';

        // Set up and execute the curl process
        $curl_handle = curl_init();

        curl_setopt($curl_handle, CURLOPT_URL, "$url");
        curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl_handle, CURLOPT_POST, 1);
        curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$update");
        curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");

        $buffer = curl_exec($curl_handle);

        curl_close($curl_handle);

        // check for success or failure

        if (empty($buffer)) 
        {
            echo 'error?!';
        } 
        else 
        {
            // mark the song as tweetered
            mysql_query("UPDATE `songs` SET `tweet` = '1' WHERE `id` = $songid ");
        }
    }

    echo $update;

该帖子的功能却因某种原因被切断了。

例如,上面的代码会发布:Tiesto - Feel It In My Bones (Feat. Tegan到twitter。

何时发帖:Tiesto - Feel It In My Bones (Feat. Tegan & Sara) - 160Kbps http://bit.ly/5mdCK4

我使用echo $ update;最后一行将twitter的输出与$update值进行比较,$update是正确的。

2 个答案:

答案 0 :(得分:5)

您是否尝试过其他输入字符串?根据你在那里发布的内容,我敢打赌,你的问题是状态中的&符号,因为这是形式帖子中的元字符。我确信PHP有一些URL编码字符串的功能,你想在$update上使用它。

答案 1 :(得分:1)

Sixten Otto是对的。你需要这样做:

$update = urlencode ($update);

防止特殊字符出现问题。