当我执行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上。)。
答案 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>
仅供参考,即使它不是很有用,这里有类型的含义:
答案 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>