2014-12-07 47 views
2

當我執行Open Graph請求時,我期望的某些響應是文本,其中包含某種標記。例如,當我要求提供相冊的名稱和說明時,在說明中我收到類似\u0040[12412421421:124:The Link]的內容。 (\u0040實際上是@符號。)facebook打開圖形文本中包含的標記格式的規範

在這種情況下,它似乎是說'鏈接'應該是超鏈接到ID爲12412421421的Facebook頁面。我認爲有類似的標籤和外部URL標記。

我想找到一些官方文檔或描述爲此,但我似乎無法找到任何文檔(我可能會看錯誤的關鍵字)。

有沒有描述這個的在線文檔?還有更好的方法是有一個PHP庫或函數可用於將此文本轉換爲與HTML等效的文件?

我使用這個Facebook PHP SDK,但它似乎沒有提供任何這樣的功能。 (不知道新版本4.0中是否有任何內容,但現在無法使用它,因爲它需要PHP 5.4+,而我的主機目前仍然在5.3上)。

+0

當你得到那個請求時你正在做什麼? – WizKid 2014-12-08 00:13:53

+0

在這種情況下,它是一個使用「https://graph.facebook.com/ {PAGE_ID}/albums」的頁面的相冊。某些專輯的「描述」恰好與另一個以此方式編碼的Facebook頁面有關聯。我不知道這是一種降價還是某種東西。您可以在圖形瀏覽器上看到它(向下滾動到「MODA MALTA 2014」條目並查看說明):https://developers.facebook.com/tools/explorer/?method = GET&path = 423178821079990%2Falbums&version = v2。 2 – jbx 2014-12-08 00:17:13

+1

在https://developers.facebook.com/bugs – WizKid 2014-12-08 02:03:49

回答

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.的代碼基本上拆分了標籤

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在:@[ID:TYPE:NAME]分成3組的信息(ID,類型,名稱)從頁面編號和名稱生成HTML鏈接之前10! #music#house


FYI即使它沒有太多有用的,這裏有種類的含義:

  • 一個應用程序(128),
  • 頁面(274)
  • 用戶(2048)。
+0

感謝您的信息,但是,您從哪裏得到關於128,274和2048的信息?還有其他可能的標記,我需要處理?也許鏈接不到Facebook?對話標籤怎麼樣? – jbx 2014-12-22 20:29:27

+0

我在測試時發現了自己,據我所知,唯一可能會遇到的其他可能的標記是linebre aks'\ n'和主題標籤。我相應地編輯了我的帖子。 – 2014-12-22 20:54:16

-1

該標記用於引用fanpage。

實施例:

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

303925999750490的是的fanpage ID。 World Next Top Model MALTA是fanpage的名稱。 (不知道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> 
+0

是的,這是相當的顯然,你剛剛說了我在我的問題中所說的話,我正在尋找的是這些標籤的完整規範。是否還有其他可能的特殊字符,例如@?例如某種鏈接標記,如何處理所有可能的案例 – jbx 2014-12-22 20:31:24

0

的@描述了一個標籤給某人,Facebook的帳號犯規做出的fanpage或一個人的區別,所以你得處理PHP only.and的@應該是描述一個人/頁標記

唯一的字符
+0

還有以#號開頭的#標籤。 – jbx 2014-12-24 10:13:41

+0

也有用\ n表示的分隔線。 – 2014-12-24 16:02:46