【发布时间】:2016-07-04 15:47:30
【问题描述】:
我目前正在使用 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 在整个链接中使用反斜杠显示它。当我的代码开始阅读 url 时是否需要它们?基本上我的正则表达式必须考虑所有的反斜杠。
谢谢。
【问题讨论】: