0

我正在创建一个藤视频共享网站。

我有一些问题。我的 og:image:secure_url 无法正确获取,因为 url 是这样显示的..

https://v.cdn.vine.co/v/thumbs/2013/04/30/5D309EAF-962F-41E1-8F22-41E4AA50FFB7-967-00000195162F03BD_1.0.7.mp4.jpg?versionId=JQ9YuwCeBry1sGZpZU40Z3wc_VF_PMb1

所以facebook在调试时给了我这个错误..

   Object at URL 'http://vinesandstuff.com/' of type 'article' is invalid because the given value '' for property 'og:image:secure_url' could not be parsed as type 'url'.

它是如何在后端设置的..

og:image:secure_url 设置,注意脚本使用 Smarty 代码。

<meta property="og:image:secure_url" content="{php} echo vine_pic($this->_tpl_vars['p']['youtube_key']);{/php}" />

以及从 twitter 抓取 og:image 的脚本..

function vine_pic( $id )
{

$vine = file_get_contents("http://vine.co/v/{$id}");
                                        preg_match('/property="og:image" content="(.*?)"/', $vine, $matches);

return ($matches[1]) ? $matches[1] : false;

}

我需要什么帮助

正在删除网址的此端部分?versionId=JQ9YuwCeBry1sGZpZU40Z3wc_VF_PMb1

我查看了其他 stackoverflow 问题,但我不太了解它应该如何设置为语法。有人可以帮助我吗?非常感谢。

4

1 回答 1

0

使用parse_urlandhttp_build_query将该 URL 拆开,然后在没有 versionID 的情况下将其重新组合在一起

我从未使用过 smarty 标签,所以我不确定那部分。在php中我会做这样的事情:(未经测试)

$pic_link=vine_pic($this->_tpl_vars['p']['youtube_key']);
$parsed=parse_url($pic_link);
$pic_vars=parse_str($parsed['query']);
unset($pic_vars['$parsed']);
$new_query=http_build_query($pic_vars);
$new_pic_link=$parsed['scheme'].$parsed['host'].$parsed['path']'?'.$new_query;
//if the above is missing a slash, change the dot to .'/'.
?>
<meta property="og:image:secure_url" content="<?php echo $new_pic_link; ?>">
于 2013-10-07T02:46:32.910 回答