Php 如何对'&引用;性格
我正在编写一个facebook应用程序,将消息发布到提要中。当我试图使用带有HTTP post的graph API将消息“我是罗伊”发布到我的提要时,我不断得到以下结果“我是罗伊”。为什么呢?我正在使用PHP调用graph API,并使用urlencode()包装消息文本 我错过了什么 这是我的PHP代码:Php 如何对'&引用;性格,php,facebook,Php,Facebook,我正在编写一个facebook应用程序,将消息发布到提要中。当我试图使用带有HTTP post的graph API将消息“我是罗伊”发布到我的提要时,我不断得到以下结果“我是罗伊”。为什么呢?我正在使用PHP调用graph API,并使用urlencode()包装消息文本 我错过了什么 这是我的PHP代码: function POST_feeds($parameters) { //extract data from the post
function POST_feeds($parameters)
{
//extract data from the post
extract($_POST);
//set POST variables
$url = 'https://graph.facebook.com/' . $parameters["facebookUserId"] . "/feed";
$fields = array(
'access_token' => $this->accessToken,
'message' => $parameters["message"]
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$facebookResponse = curl_exec($ch);
//close connection
curl_close($ch);
$response = new Response();
$response->addItem($facebookResponse);
return response;
}
更新
上面的PHP函数从以下XMLHttpRequest请求的POST参数获取其参数:
var xhr = new XMLHttpRequest();
xhr.open("POST", webServiceUrl + "feeds", true);
var params = "facebookUserId=" + facebookUserId + "&message=" + message;
print(params);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.setRequestHeader("Content-length", params.length);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
print(xhr.responseText);
var responseObject = JSON.parse(xhr.responseText);
successCallback(responseObject);
} else {
failureCallback();
}
}
};
xhr.send(params);
问题似乎是从javascript代码开始的(当我尝试在PHP代码中用“'”字符硬编码一些消息时,一切都很好)
谢谢 您不应该对数据进行URL编码,php facebook api会为您解决这一问题 ---原始答案 为了解析转义字符,您必须在外部使用双引号
“
。此外,如果使用双引号,则不需要转义”
"I\'m Roy"
不一样
'I\'m Roy'
试试这个:
如果字符串中还有html标记,您可能希望将其与文档中提到的htmlentities()结合使用…如果您正在进行POST请求,为什么要在邮件文本中使用
urlencode()
?请尝试不使用它。即使我不使用urlencode(),也会发生这种情况你是不是在运行那些可怕的共享主机提供商,他们仍然认为神奇的报价是件好事?我不明白,如果我事先不知道我的文字会是什么呢?