更新Twitter状态:字符转义和URL

时间:2009-10-14 16:28:17

标签: php api twitter

我将POST变量中的文本从我网站上的表单传递到Twitter,并将此消息保存在我自己的网站上。当我查看我的网站上的条目时,这是绝对的罚款。但是,在某些情况下,当消息中有撇号时,twitter会更新用户的状态,但会删除撇号,这可以在用户状态中看到!

当我在推特网站上更新我的推特状态时,这不会发生。所以我想知道有没有办法将文本传递给twitter?

我目前这样做,并且我使用了这个很棒的Twitter类。 http://github.com/jmathai/twitter-async/tree

$success = $twitterObj->post_statusesUpdate(array('status' => $_POST['message'].$URL.$key));

此外,将URL传递给Twitter用于自动链接URL,但现在这只是显示为文本?

Twitter过去一个月有变化会导致上述情况发生吗?如果不是,我怎么能克服这个?

全部谢谢

修改

更多代码:

function tweetit(){
    global $URL;
    global $key;

    include './twitter/EpiCurl.php';
    include './twitter/EpiOAuth.php';
    include './twitter/EpiTwitter.php';

    $consumer_key = 'hidden';
    $consumer_secret = 'hidden';

    $twitterObj = new EpiTwitter($consumer_key, $consumer_secret);

    $twitterObj->setToken($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);

    $success = $twitterObj->post_statusesUpdate(array('status' =>  $_POST['message'].' '.$URL.$key));

    return $success->response['id']; 
}

5 个答案:

答案 0 :(得分:4)

听起来你的php配置已启用magic_quotes_gpc,它会在所有输入上自动调用addslashes(例如,你的POST值)。我在php手册中读到了addslashes / stripslashes。

答案 1 :(得分:1)

您使用的是最新版本吗?不确定是什么问题,因为库的单元测试之一放入单引号(以及其他随机字符)。

http://github.com/jmathai/twitter-async/blob/master/tests/EpiTwitterTest.php#L90

答案 2 :(得分:0)

您可以使用htmlentities函数。

$success = $twitterObj->post_statusesUpdate(array('status' => htmlentities($_POST['message']).$URL.$key));

或htmlspecialchars:

$success = $twitterObj->post_statusesUpdate(array('status' => htmlspecialchars($_POST['message']).$URL.$key));

答案 3 :(得分:0)

收到帖子后但在通过卷曲发送之前,请删除stripslashes

的斜杠
urlencode(stripslashes($posted_status_update));

答案 4 :(得分:0)

我遇到了同样的问题。如果使用www.twitter.com而不是twitter.com进行调用,Twitter的行为会有所不同。这是一个已知的错误。

http://code.google.com/p/twitter-api/issues/detail?id=890&can=1&q=www&colspec=ID%20Stars%20Type%20Status%20Priority%20Owner%20Summary%20Opened%20Modified%20Component