Php file_get_contents特殊字符

时间:2016-10-11 13:44:45

标签: php api server special-characters file-get-contents

我将使用api获取玩家详细信息。有些名字带有特殊字符。

姓名Bausí

网址:https / eu.api.battle.net / wow / character / Blackrock /Bausí?fields = statistics& locale = en_GB& apikey = xxx

如果我使用file_get_contens()则没有响应。

没有特殊字符的名称完美无缺。我已经使用了rawurlencode()和urlencode()。两者都不起作用。我能做什么? 我读了一些关于urlencode()的内容,而rawurlencode()依赖于服务器。

谢谢Chzn

1 个答案:

答案 0 :(得分:0)

嗯,我不知道什么是错的。

                $charname = mb_convert_encoding("Bausí", "HTML-ENTITIES", "UTF-8");
                $realm = "Blackrock";
                $_SESSION["region"] = "eu";
                $opts = array('https' => array('header' => 'Accept-Charset: UTF-8, *;q=0'));
                $context = stream_context_create($opts);

                $char_params = array(
                    'fields' => "statistics",
                    'locale' => "en_GB",
                    'apikey' => "my_api_key"
                );

                $char_url = "https://".$_SESSION['region'].".api.battle.net/wow/character/".str_replace("'","",$realm)."/".$charname."?".http_build_query($char_params);

                if (!$json_char_o = file_get_contents($char_url, false, $context)) {
                      $error = error_get_last();
                      echo "HTTPs request failed. Error was: " . $error['message'];
                }else{
                      echo $json_char_decoded = json_decode($json_char_o);

                }
它给我一个错误:

HTTP请求失败。错误是:file_get_contents(https://eu.api.battle.net/wow/character/Blackrock/Bausí?fields=statistics&locale=en_GB&apikey=my_api_key):无法打开流:HTTP请求失败!找不到HTTP / 1.1 404

响应应该是json对象。

如果我手动打开链接,它可以正常工作。怎么了? :/