Json_decode со специальными символами
У меня большая проблема с отправкой данных через JQuery Ajax в виде JSON на мой Сервер. JSLint говорит, что данные в порядке, а Content-Type запроса установлен вapplication/x-www-form-urlencoded; charset=UTF-8
, Сервер работает на PHP 5.2.11, поэтому я могут использовать.json_last_error()
Я попытался url_decode, utf8_decode и html_entities_decode, но, похоже, ничего не работает.
var_dump(json_decode($jdata));
возвращает ноль, но если я сделаюvar_dump($jdata)
все выглядит хорошо.$jdata
это почтовые данные :.$jdata = $this->input->post('requestdata');
Вот несколько примеров постов данных из Firebug:
{
"projectnumber": "345",
"projecdescription": "345",
"articles": [
{
"position": 1,
"article_id": 677,
"online_text": "3 Behälter; Band I-III nach indiv. Stückliste, Sprache: DE - Sprache: de"
},
{
"position": 2,
"article_id": 678,
"online_text": "2 Behälter; Band I-III nach indiv. Stückliste, Sprache: ### - Sprache: en"
}
]
}
Редактировать:
Я попробовал это сейчас:
$string = $this->input->post('requestdata');
var_dump($string);
$json = preg_replace('/,\s*([\]}])/m', '$1', utf8_encode($string));
$json = json_decode($json);
var_dump($json);
Результат:
строка (338) "{"номер проекта": "4444 ","проект ":"4444 ","статьи»: [{"позиция": 1 "article_id»: 676 "online_text ":"### Бехафильтр; Группа I-III нач индивиду. Stuckliste, Sprache: DE - Sprache: de "}, {"позиция": 2 "article_id»: 681 "online_text ":"### Бехафильтр; Группа I-III нач индивиду. Stuckliste, Sprache: ### - Sprache: en "}]}» НОЛЬ
Вставив строку JSON непосредственно в исходный код PHP, он работает, но получить его из поста нет!