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

时间:2014-12-07 21:06:40

标签: php facebook facebook-graph-api facebook-php-sdk

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

在这种情况下,似乎所说的是“The Link'应该是一个ID为12412421421的facebook页面的超链接。我假设有一个类似的标签和标签,用于标签和外部URL。

我正在尝试为此找到一些官方文档或说明,但我似乎无法找到任何相关的文档(我可能会查找错误的关键字)。

是否有描述此内容的在线文档?更好的是还有一个PHP库或函数已经可以在某处将这个文本转换成它的HTML等价物吗?

我正在使用此Facebook PHP SDK,但它似乎没有提供任何此类功能。 (不确定新版本4.0中是否有任何内容,但我现在无法使用它,因为它需要PHP 5.4+并且我的主机目前仍在5.3上。)。

3 个答案:

答案 0 :(得分:1)

确实,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,type, name)从页面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中与London, United Kingdom的现场音乐会!   #music #house


仅供参考,即使它不是很有用,这里有类型的含义:

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

答案 1 :(得分:0)

@描述某人的标签,facebook id不会在粉丝页面或单个人之间产生差异所以你只需要处理php.and @应该是唯一一个描述人/页面标记的字符

答案 2 :(得分:-1)

标记用于引用粉丝页。

示例:

"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>