使用特殊字符Json_decode
我遇到了一个大问题,通过jQuery Ajax将数据作为JSON发布到我的服务器。JSLint 表示数据正常,并且请求的内容类型设置为 。服务器在 PHP 5.2.11 上运行,所以我不能使用 .application/x-www-form-urlencoded; charset=UTF-8
json_last_error()
我尝试了url_decode,utf8_decode和html_entities_decode,但似乎没有任何效果。
var_dump(json_decode($jdata));
返回 null,但如果我做一个一切看起来都OK。 是帖子数据:。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);
结果是:
string(338) “{”projectnumber“: ”4444“, ”projecdescription“: ”4444“, ”articles“: [{”position“:1, ”article_id“: 676, ”online_text“: ”### Behälter;乐队 I-III 纳赫 indiv.Stückliste, Sprache: DE - Sprache: de“}, {”position“:2, ”article_id“: 681, ”online_text“: ”### Behälter;乐队 I-III 纳赫 indiv.Stückliste, Sprache: ### - Sprache: en“}]}” NULL
通过将JSON字符串直接粘贴到PHP源代码中,它可以工作,但从post获取它却不起作用!