Facebook 标题中的斜杠 post
Slash in the caption of a Facebook post
我在实现 post 发送到 Facebook 的功能时遇到问题。我需要在标题中添加一个 /
字符。不幸的是,如果它在标题字符串内,那么在 Facebook 上不会显示斜线后的部分。如果我定义像 foo.bar/username
这样的标题,那么 foo.bar
将显示为标题。这是不可取的。我试图用 \/
转义它,在这种情况下,foo.bar\/username
出现在标题中。有没有显示包含斜杠的字符串作为标题?
编辑:
我会给你更多关于这个问题的细节,因为它似乎不是在所有情况下都可以重现的。我有这段代码,调用 posting to wall:
if (fRequest::get("share") === "facebook") {
$title = "Ask or tell me anything anonymously ";
$uri = QM::$mainSiteName.User::current()->getUsername();
$desc = "";
$msg = "";
$pic = QM::$mainSiteName . "images/facebook-share-my-link-200x200.png";
$caption = $uri;
$action_name = "Ask " . $_SESSION["username"] . " anything";
$action_link = $uri;
App::CurrentUser()->postToFacebookWall($title, $uri, $desc, $msg, $pic, $caption, $action_name, $action_link);
}
上面的代码调用了用户class的postToFacebookWall
函数:
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" => $uri, "params" => $data));
} catch (Exception $e) {
return false;
}
return true;
}
上面的代码触发动作工厂:
public static function facebookActionFactory($actionKey, $params) {
$element = new FacebookAction($actionKey, $params);
switch ($actionKey) {
case FacebookActionPrivilege::$ACTION_POST_KEY: return $element->post($params["params"]);
case FacebookActionPrivilege::$ACTION_FIND_FRIENDS_KEY: return $element->findFriends($params["params"]);
case FacebookActionPrivilege::$ACTION_PICTURE_KEY: return $element->getPicture($params["params"]);
}
}
依次触发 post 方法:
public function post($params) {
if (($this->getIsPossible()) && (is_array($params))) {
$postRequest = new FacebookRequest(FacebookActionPrivilege::getSession(), 'POST', '/me/feed', $params);
$postResponse = $postRequest->execute();
return $postResponse;
}
}
最后两个方法是 FacebookAction
class 的一部分。 post 方法触发 FacebookRequest
SDK 构造函数,post 发送消息。
请注意,QM::$mainSiteName.User::current()->getUsername() 会生成一个字符串,如 "http://foo.bar/loremipsum"
并且在 Facebook post 中,标题是: foo.bar
经过反复试验,我找到了解决方案。而不是
$caption = "http://foo.bar/loremipsum";
我正在使用
$caption = "foo.bar ⁄loremipsum";
⁄
是对 /
进行编码,由于结果没有很好地显示在 facebook 墙上,我需要一些 space,由
[ 解决=15=]
我在实现 post 发送到 Facebook 的功能时遇到问题。我需要在标题中添加一个 /
字符。不幸的是,如果它在标题字符串内,那么在 Facebook 上不会显示斜线后的部分。如果我定义像 foo.bar/username
这样的标题,那么 foo.bar
将显示为标题。这是不可取的。我试图用 \/
转义它,在这种情况下,foo.bar\/username
出现在标题中。有没有显示包含斜杠的字符串作为标题?
编辑: 我会给你更多关于这个问题的细节,因为它似乎不是在所有情况下都可以重现的。我有这段代码,调用 posting to wall:
if (fRequest::get("share") === "facebook") {
$title = "Ask or tell me anything anonymously ";
$uri = QM::$mainSiteName.User::current()->getUsername();
$desc = "";
$msg = "";
$pic = QM::$mainSiteName . "images/facebook-share-my-link-200x200.png";
$caption = $uri;
$action_name = "Ask " . $_SESSION["username"] . " anything";
$action_link = $uri;
App::CurrentUser()->postToFacebookWall($title, $uri, $desc, $msg, $pic, $caption, $action_name, $action_link);
}
上面的代码调用了用户class的postToFacebookWall
函数:
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" => $uri, "params" => $data));
} catch (Exception $e) {
return false;
}
return true;
}
上面的代码触发动作工厂:
public static function facebookActionFactory($actionKey, $params) {
$element = new FacebookAction($actionKey, $params);
switch ($actionKey) {
case FacebookActionPrivilege::$ACTION_POST_KEY: return $element->post($params["params"]);
case FacebookActionPrivilege::$ACTION_FIND_FRIENDS_KEY: return $element->findFriends($params["params"]);
case FacebookActionPrivilege::$ACTION_PICTURE_KEY: return $element->getPicture($params["params"]);
}
}
依次触发 post 方法:
public function post($params) {
if (($this->getIsPossible()) && (is_array($params))) {
$postRequest = new FacebookRequest(FacebookActionPrivilege::getSession(), 'POST', '/me/feed', $params);
$postResponse = $postRequest->execute();
return $postResponse;
}
}
最后两个方法是 FacebookAction
class 的一部分。 post 方法触发 FacebookRequest
SDK 构造函数,post 发送消息。
请注意,QM::$mainSiteName.User::current()->getUsername() 会生成一个字符串,如 "http://foo.bar/loremipsum"
并且在 Facebook post 中,标题是: foo.bar
经过反复试验,我找到了解决方案。而不是
$caption = "http://foo.bar/loremipsum";
我正在使用
$caption = "foo.bar ⁄loremipsum";
⁄
是对 /
进行编码,由于结果没有很好地显示在 facebook 墙上,我需要一些 space,由
[ 解决=15=]