使用API​​将T.co替换为完整的Twitter链接

时间:2016-03-18 02:25:08

标签: php regex twitter

我目前正在使用EpiTwitter API来获取推文并将其存储在数据库中,但我想替换给定推文中的任何“T.co”链接并将其替换为完整链接。正则表达式是我需要一些帮助来确定如何替换链接。

Twitter通过urls实体返回URL。

"urls": [{
  "url": "https:\/\/t.co\/XdXRudPXH5",
  "expanded_url": "https:\/\/blog.twitter.com\/2013\/rich-photo-experience-now-in-embedded-tweets-3",
  "display_url": "blog.twitter.com\/2013\/rich-phot\u2026",
  "indices": [80, 103]
}],

我目前正在调用API并循环播放这些推文:

$resp = $twitterObj->get('/statuses/user_timeline.json', array('screen_name'=>$row['screenname']));

    foreach($resp->response as $tweet)
    {                       
        foreach($tweet['entities']['urls'] as $url_type) 
        {
            if(preg_match('/https:\/\/t.co\/[^\s]+/', $url_type['url']))
            {
                 $processedtweet = str_replace($url_type['url'], $url_type['expanded_url'], $tweet['text']);        
            }                           
        }
    }

用于检查它的正则表达式是T.co链接,并将其替换为链接expanded_urldisplay_url实体是我需要帮助的地方,因为preg_match语句未评估T.co链接正确。

修改 我使用链接https://t.co/XdXRudPXH5对此进行了测试,并且它正确评估,但是twitter API在整个链接中使用反斜杠显示它。当我的代码到处读取网址时,它们是否会被要求?基本上我的正则表达式必须考虑所有的反斜杠。

感谢。

1 个答案:

答案 0 :(得分:0)

我将使用strpos而不是preg_match

if ( strpos(url_type['url'],'t.co') !== false)