【发布时间】:2012-08-13 15:50:32
【问题描述】:
如何在 PHP 中的自定义网站(如linkedin、facebook)上共享带有图像和描述的链接。
如果用户分享任何有效链接,它会显示带有 facebook 和 linkedin 等描述的图片。
【问题讨论】:
-
实施的哪个特定部分有问题?
-
是的,我试过了,但我没有像 facebook 或 linkedin。
如何在 PHP 中的自定义网站(如linkedin、facebook)上共享带有图像和描述的链接。
如果用户分享任何有效链接,它会显示带有 facebook 和 linkedin 等描述的图片。
【问题讨论】:
您想了解 Facebook Open Graph 元标记。它们允许您编辑共享帖子的呈现方式。更多信息可以在这篇文章中找到http://davidwalsh.name/facebook-meta-tags
【讨论】:
您需要获取给定 URL 的内容,可能使用file_get_contents 或类似的方法(例如:this)并解析此 URL 的内容。
让我们尝试一个非常基本的例子;
$url = get_url_from_user_post($user_post);
// get page contents (as html)
$page_contents = file_get_contents($url);
// search for title
// option 1
preg_match('~<meta\s+property="og:title"\s+content="(.*?)".*?>~um', $page_contents, $matches);
// option 2
preg_match("~<title>(.*)</title>~um", $page_contents, $matches);
$page_title = trim($matches[1]);
// search for an image
// option 1
preg_match('~<meta\s+property="og:image"\s+content="(.*?)".*?>~um', $page_contents, $matches);
// option 2
preg_match_all('~<img.*?src="(.*?)".*?>~um', $page_contents, $matches);
if (!empty($matches)) {
// ... and get one of them
你有更多的选择来做这件事,获取/解析页面的 html 内容。请参阅:http://php.net/manual/en/book.dom.php,或使用 PHP (get_meta_tags) 获取元标记。
【讨论】:
好的,我得到的是您想要获取用户链接到的站点的图像和基本描述。
要获取描述,最简单的方法是使用php中的get_meta_tags函数,并使用描述。
$meta = get_meta_tags($some_url);
//description will be stored in $meta['description'] if it was found from $some_url.
这依赖于网站提供适当的元标记,这并不总是对您有利,因此您需要备份方法(例如文档标题或检查 html 中的单词)或默认描述值以防万一什么都得不到。
要获取网站的快照,您可以依赖第三方服务,例如 picoshot.com 或 websnapr.com/,但在很多情况下,这可能不是最佳选择。如果你想自己做快照,你可以这样做,但过程会很复杂,你需要对你的服务器和环境进行大量控制,你可以查看this之类的东西来帮助你开始快照。如果您有 Linux 等环境,该脚本将无法工作,因为它使用 Internet Explorer 浏览器捕获,您可以查看here 了解一些 Linux 解决方法。
【讨论】: