Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何对'&引用;性格_Php_Facebook - Fatal编程技术网

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

我正在编写一个facebook应用程序,将消息发布到提要中。当我试图使用带有HTTP post的graph API将消息“我是罗伊”发布到我的提要时,我不断得到以下结果“我是罗伊”。为什么呢?我正在使用PHP调用graph API,并使用urlencode()包装消息文本

我错过了什么

这是我的PHP代码:

    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(),也会发生这种情况你是不是在运行那些可怕的共享主机提供商,他们仍然认为神奇的报价是件好事?我不明白,如果我事先不知道我的文字会是什么呢?