我正在尝试允许我的用户将我的网络应用中的项目符号列表发布到他们的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>
我的问题是我应该如何编码来自POST表单的$share_text
,并且我应该使用不同的方式编写项目符号&amp;换行让Facebook了解有子弹和换行符?
如果我将项目符号和换行符复制到状态更新中,它们可以正常工作,所以我认为这是可能的。
编辑:我已将问题缩小到换行符。如果文本中没有换行符,我可以将子弹发布到FB。我认为问题是<BR />
的html编码包含;
的。
由于
答案 0 :(得分:1)
想出来。问题是线路断裂了。
我的解决方案是采用textarea输入$input
,通过<br />
将所有换行符更改为nl2br($input)
,
通过<br />
将所有\r\n\r\n
替换为str_replace('<br />','\r\n\r\n',nl2br($input))
,因为Facebook将\r\n\r\n
识别为新行
然后通过preg_replace( "/\r|\n/", "",str_replace('<br />','\r\n\r\n',nl2br($share)));
获取用户的表单输入并通过最后preg_replace
函数运行它允许Facebook正确读取并发布带有换行符的弹出列表!