当我执行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>