Facebook打开图形文本中包含的标记格式规范


Specification of mark-up format included in facebook open graph text

当我执行Open Graph请求时,我期望是文本的一些响应包含某种标记。例如,当我请求专辑的名称和描述时,在描述中我得到类似 'u0040[12412421421:124:The Link] .('u0040实际上是@符号。

在这种情况下,它所说的似乎是"链接"应该是指向ID为12412421421的Facebook页面的超链接。我认为主题标签和外部URL也有类似的标记。

正在尝试为此找到一些官方文档或描述,但我似乎找不到任何文档(我可能用错误的关键字查找(。

是否有任何在线文档对此进行了描述?更好的是,是否有一个PHP库或函数已经在某个地方将此文本转换为其HTML等效项?

我正在使用这个Facebook PHP SDK,但它似乎没有提供任何这样的功能。(不确定新版本 4.0 中是否有任何内容,但我暂时不能使用它,因为它需要 PHP 5.4+,而我的主机目前仍在 5.3 上(。

确实,PHP SDK没有提供任何来处理这些链接的内容,文档也没有记录这一点。但是,API 在 description 字段中提供了您需要的所有信息,因此您可以执行以下操作:

$description = "Live concert with @[66961492640:274:Moonbootica] "
             . "in @[106078429431815:274:London, United Kingdom]! #music #house";
function get_html_description($description) {
    return 
        // 1. Handle tags (pages, people, etc.)
        preg_replace_callback("/@'[([0-9]*):([0-9]*):(.*?)']/", function($match) {
            return '<a href="http://facebook.com/'.$match[1].'">'.$match[3].'</a>';
        },
        // 2. Handle hashtags
        preg_replace_callback("/#('w+)/", function($match) {
            return '<a href="http://facebook.com/hashtag/'.$match[1].'">'.$match[0].'</a>';
        },
        // 3. Handle breaklines
        str_replace("'n", "<br />", $description)));
}
// Display HTML
echo get_html_description($description);

虽然2.3.处理主题标签和隔断线,但代码的第1.部分基本上将标签@[ID:TYPE:NAME]分成 3 组信息(id、类型、名称(,然后从页面 ID 和名称生成 HTML 链接:

Live concert with <a href="http://facebook.com/66961492640">Moonbootica</a> in <a href="http://facebook.com/106078429431815">London, United Kingdom</a>! <a href="http://facebook.com/hashtag/music">#music</a> <a href="http://facebook.com/hashtag/house">#house</a>

与Moonbootica在英国伦敦的现场音乐会! #music #house


仅供参考,即使它没有多大用处,以下是类型的含义:

  • 一个应用程序 (128(,
  • 一页 (274(,
  • 用户 (2048(。
@向

某人描述一个标签,Facebook ID在粉丝页面或单个人之间没有区别,所以你只需要处理PHP。

标记用于引用粉丝页面。

例:

"description": "Event organised by @[303925999750490:274:World Next Top Model MALTA]'nPhotography by @[445645795469650:274:Pixbymax Photography]"

303925999750490是粉丝页面 ID。World Next Top Model MALTA是粉丝页面的名称。(不知道274是什么意思(

当您在页面上呈现它时,您可以像这样呈现:

Event organised by <a href="https://facebook.com/303925999750490">World Next Top Model MALTA</a>
Photography by <a href="https://facebook.com/445645795469650">Pixbymax Photography</a>