-8

如何在 PHP 中的自定义网站(如linkedin、facebook)上共享带有图像和描述的链接。

如果用户共享任何有效链接,它会显示带有 facebook 和 linkedin 等描述的图像。

4

3 回答 3

3

您想了解 Facebook Open Graph 元标记。它们允许您编辑共享帖子的呈现方式。更多信息可以在这篇文章中找到http://davidwalsh.name/facebook-meta-tags

于 2012-08-17T07:44:41.740 回答
1

您需要获取给定 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) 获取元标记。

于 2012-08-17T08:55:46.457 回答
1

好的,我得到的是您想要获取用户链接到的站点的图像和基本描述。

要获取描述,最简单的方法是使用 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/,但在很多情况下,这可能不是最佳选择。如果你想自己做快照,你可以这样做,但是这个过程会很复杂,你需要对你的服务器和环境进行大量的控制,你可以查看类似的东西开始使用快照。如果您有 Linux 等环境,该脚本将无法工作,因为它使用 Internet Explorer 浏览器捕获,您可以在此处查看一些 Linux 解决方法。

于 2012-08-17T09:02:19.333 回答