2016-10-11 10 views
0

im собираюсь использовать api, чтобы получить информацию о игроке. Некоторые имена имеют специальные символы.Php file_get_contents Специальные символы

Имя Bausi

Url: HTTPS/eu.api.battle.net/вау/символ/Блэкрок/Bausi статистики поля = & локаль = en_GB & apikey = ххх

, если я использую file_get_contens () ответа нет.

Имена без специальных символов отлично работают. Я уже использовал rawurlencode() и urlencode(). Оба не работают. Что я могу сделать? Я прочитал кое-что о urlencode() и rawurlencode() зависит от сервера.

Thanks Chzn

+0

Скорее всего, вам нужно кодировать символы Юникода. –

+0

Попробуйте найти ответы на эту тему: http://stackoverflow.com/questions/2236668/file-get-contents-breaks-up-utf-8-characters –

+0

не работает Я сделал $ charname = mb_convert_encoding ("Bausí" , "HTML-ENTITIES", "UTF-8"); и вставьте его в URL-адрес. все еще не работает – chzn

ответ

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.

Если я открываю ссылку вручную, она отлично работает. Что не так? :/