Я пытаюсь разрешить моим пользователям размещать маркированный список из моего webapp в свой фид Facebook. Список создается в форме (с пулями и разрывами строк), которые затем могут быть отредактированы и отправлены.
Мой код отлично работает при отправке обычного текста (отправка содержимого формы в фид FB), но он прерывается, когда сообщение имеет ●
(● ●
) и разрывы строк (
) не распознаются ,
Я пробовал кучу разных способов кодирования сообщения, но никто из них не работает. Вот моя функция 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 понимал, что есть пули и разрывы строк?
Если я копирую патроны и разрывы строк в обновление статуса, они работают нормально, поэтому я предполагаю, что это возможно.
EDIT: Я сузил проблему до разрывов строк. Я могу отправлять пули в FB, если в тексте нет разрывов строк. Я думаю, проблема заключается в том, что html-кодирование < <BR />
включает ;
«S.
благодаря
Догадаться. Проблема заключалась в том, что линия ломается сама.
Мое решение состояло в том, чтобы взять входной nl2br($input)
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 и опубликовать бюллетень с разрывами строк!