我目前正在使用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_url
或display_url
实体是我需要帮助的地方,因为preg_match语句未评估T.co链接正确。
修改
我使用链接https://t.co/XdXRudPXH5
对此进行了测试,并且它正确评估,但是twitter API在整个链接中使用反斜杠显示它。当我的代码到处读取网址时,它们是否会被要求?基本上我的正则表达式必须考虑所有的反斜杠。
感谢。
答案 0 :(得分:0)
我将使用strpos而不是preg_match
if ( strpos(url_type['url'],'t.co') !== false)