Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2010, 21:19   #1
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию php и json

Вопрос первый , есть такой вот ответ json:

PHP код:
Array ( [response] => Array ( [0] => Array ( [uid] => [first_name] => РџР°РІРµР» [last_name] => Р”СѓСЂРѕРІ ) ) ) 
Почему такие проблемы с кодировкой ?Как их устранить? Не понял

Вопрос второй , как достать данные из ответа json ? Улыбка
Abuhamed вне форума Ответить с цитированием
Старый 27.11.2010, 21:26   #2
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Почему такие проблемы с кодировкой ?Как их устранить? Не понял
Надо работать полностью в кодировке utf-8, иначе никак.
Можно, конечно, наставить "заплат", но сразу говорю рано или поздно ошибка в каком-нибудь браузере проявиться. Проверил на собственной шкуре.
Цитата:
как достать данные из ответа json ?
Достать где? На сервере или клиенте?
Я на сервере создаю структуру при помощи своих функций, а на клиенте достаю при помощи eval.
Виталий Желтяков вне форума Ответить с цитированием
Старый 27.11.2010, 22:56   #3
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

1. У вас JSON в формате UTF-8, а клиент хочет windows-1251. Согласовуйте кодировку. Желательно везде применять UTF-8, поскольку она универсальная.

2. Работать с JSON проще простого и приятно.
Код:
$.getJSON('get_json.php', function(data) {
  $('body').append('<p>UID: ' + data.response[0].uid + '</p>'
    + '<p>' + data.response[0].first_name + '</p>'
    + '<p>' + data.response[0].last_name + '</p>');
});
SkyM@n вне форума Ответить с цитированием
Старый 27.11.2010, 23:27   #4
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

А как использовать и там и там одну и туже кодировку ? Я погуглил но везде только кодировка для мускула а для самого пхп не знаю .
Abuhamed вне форума Ответить с цитированием
Старый 27.11.2010, 23:38   #5
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Ссылку можете дать на скрипт? Или веб-сервер не в Сети?
SkyM@n вне форума Ответить с цитированием
Старый 27.11.2010, 23:41   #6
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

Не в сети, на компе на денвере стоит
Abuhamed вне форума Ответить с цитированием
Старый 27.11.2010, 23:42   #7
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Покажите код
SkyM@n вне форума Ответить с цитированием
Старый 27.11.2010, 23:48   #8
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

index.php
PHP код:
<?
require 'vkapi.class.php';

$api_id ''
$secret_key '';

$VK = new vkapi($api_id$secret_key);

$resp $VK->api('getProfiles', array('uids'=>'1'));
print_r($resp);
?>
vkapi.class.php
PHP код:
<?php
class vkapi {
    var 
$api_secret;
    var 
$app_id;
    var 
$api_url;
    
    function 
vkapi($app_id$api_secret$api_url 'api.vk.com/api.php') {
        
$this->app_id $app_id;
        
$this->api_secret $api_secret;
        if (!
strstr($api_url'http://')) $api_url 'http://'.$api_url;
        
$this->api_url $api_url;
    }
    
    function 
api($method,$params=false) {
        if (!
$params$params = array(); 
        
$params['api_id'] = $this->app_id;
        
$params['v'] = '3.0';
        
$params['method'] = $method;
        
$params['timestamp'] = time();
        
$params['format'] = 'json';
        
$params['random'] = rand(0,10000);
        
ksort($params);
        
$sig '';
        foreach(
$params as $k=>$v) {
            
$sig .= $k.'='.$v;
        }
        
$sig .= $this->api_secret;
        
$params['sig'] = md5($sig);
        
$query $this->api_url.'?'.$this->params($params);
        
$res file_get_contents($query);
        return 
json_decode($restrue);
    }
    
    function 
params($params) {
        
$pice = array();
        foreach(
$params as $k=>$v) {
            
$pice[] = $k.'='.urlencode($v);
        }
        return 
implode('&',$pice);
    }
}
?>
Abuhamed вне форума Ответить с цитированием
Старый 27.11.2010, 23:53   #9
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

А теперь покажите код, который достает (показывает) JSON
SkyM@n вне форума Ответить с цитированием
Старый 27.11.2010, 23:55   #10
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

$resp = $VK->api('getProfiles', array('uids'=>'1'));
print_r($resp);
Abuhamed вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбор JSON данных AndreyK Общие вопросы Delphi 0 29.10.2010 22:55
JSON, Deplhi Varossa Работа с сетью в Delphi 0 10.09.2010 15:14
idHttp.Post и символ '[' в строке JSON Yugen667 Работа с сетью в Delphi 4 11.07.2010 00:01
Работа с JSON Wayfer Работа с сетью в Delphi 3 09.07.2010 19:32
JSON и C++Builder s2dent Общие вопросы C/C++ 0 15.06.2010 14:46