Я использую API Facebook с их официальной библиотекой PHP. У меня есть код, который публикует некоторый контент в Facebook, однако смайлики не публикуются успешно. Это код:
public function postToFacebook() {
$stripped_question = App::unclean($this->getQuestion());
$question_id = $this->getId();
$answer = $this->getAnswer();
if ((!!$answer) && (strlen($answer) > 10)) {
$answer = substr($answer, 0, strlen($answer) / 2)."...";
}
$uri = QM::$mainSiteName."question/question/qid/$question_id/";
$desc = "";
$caption = App::unclean($answer);
$title = $stripped_question;
$pic = QM::$mainSiteName . "images/facebook-attachment.png";
$action_name = "Ask " . $_SESSION["username"] . " anything";
$action_link = QM::$mainSiteName . $_SESSION["username"];
$msg = "";
App::CurrentUser()->postToFacebookWall($title, $uri, $desc, $msg, $pic, $caption, $action_name, $action_link);
}
Приложение:: нечисто:
public static function unclean($var) {
return QM::filterText(stripslashes(trim($var)));
}
QM::filterText:
public static function filterText($text) {
return str_replace(array('<br />', '<br/>', '<br>'), '<br>', htmlspecialchars($text));
}
И, наконец, код для публикации в Facebook:
public function postToFacebookWall($title, $uri, $desc, $msg = null, $pic = null, $caption = null, $action_name = null, $action_link = null, $uid = 'me') {
try {
$data = array(
'name' => $title,
'link' => $uri,
'description' => $desc
);
if ($pic) {
$data['picture'] = $pic;
}
if ($caption) {
$data['caption'] = $caption;
}
if ($action_name) {
$data['actions'] = json_encode(array('name' => $action_name, 'link' => $action_link));
}
Facebook\FacebookAccessor\FacebookAction::facebookActionFactory("post", array("url" => QM::$mainSiteName, "params" => $data));
} catch (Exception $e) {
return false;
}
return true;
}
Все работает нормально, кроме того, что смайлики не отображаются. Что следует изменить, если вопрос и/или ответ содержат смайлики, чтобы показать все, включая смайлики на Facebook?