开发者

twitter api post being cut off

I use the below code to post updates to 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_h开发者_Go百科andle, 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;

The post functions however it is cut off for some reason.

For example the above code will post: Tiesto - Feel It In My Bones (Feat. Tegan to twitter.

When it should post: Tiesto - Feel It In My Bones (Feat. Tegan & Sara) - 160Kbps http://bit.ly/5mdCK4

I use the echo $update; line at the end compare the output to twitter to the $update value and $update is correct.


Have you tried other input strings? From what you've posted there, I'd bet that your problem is the ampersand in the status, since that's a metacharacter in form posts. I'm sure PHP has some function to URL-encode strings, and you'll want to use it on $update.


Sixten Otto is right. You need to do:

$update =urlencode($update);

to prevent issues with special characters.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜