包括换行&在Facebook图表发布功能的要点

Including line breaks & bullet points in a Facebook graph post function

本文关键字:功能 布功能 换行 Facebook 包括      更新时间:2023-09-26

我试图让我的用户从我的webapp发布项目列表到他们的Facebook feed。列表创建在一个表单中(带有&换行),然后可以编辑和提交。

当发送常规文本(将表单内容发布到FB feed)时,我的代码工作得很好,但当消息有子弹时(●●)和换行符(
)不被识别。

我已经尝试了一堆不同的方式编码的消息,但没有一个工作。下面是我的FB函数:

  <script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : '(MYID)',
      xfbml      : true,
      version    : 'v2.0'
    });
    FB.login(function(){
    FB.api('/me/feed', 'post', {message: '<?=$share_text;?>'});
    }, {scope: 'publish_actions'});
  };
  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
   </script>

我的问题是我应该如何编码$share_text,它来自POST表单,我应该使用不同的方式来写子弹&这样Facebook就能明白有子弹头和换行符了?

如果我将项目符号和换行符复制到状态更新中,它们可以正常工作,所以我认为这是可能的。

编辑:我已经把问题缩小到换行符。我可以张贴子弹到FB,如果在文本中没有换行。我认为问题是<BR />的html编码包括;的。

谢谢

明白了。问题在于换行本身。

我的解决方案是采取一个文本区域输入$input,通过nl2br($input)改变所有的断行到<br />

通过str_replace('<br />',''r'n'r'n',nl2br($input))将所有<br />替换为'r'n'r'n,因为Facebook将'r'n'r'n识别为新行

然后通过preg_replace( "/'r|'n/", "",str_replace('<br />',''r'n'r'n',nl2br($share)));删除所有隐藏的换行符

获取用户的表单输入并通过最后一个preg_replace函数运行它允许Facebook正确读取它并发布带有换行符的项目列表!