有人可以帮我编写JSON语法链接到php字符串变量吗? 要编码的网址(链接包含像é这样的匈牙利字符):
<a href='http://www.szerelmifajdalomklinika.hu/kapcsolati-kerdoiv/?partner_id=100'>Kérdőív kitöltése</a>
它与以下php代码一起使用:
$user_survey='"\u003ca href=\"http://www.szerelmifajdalomklinika.hu/kapcsolati-kerdoiv/?partner_id=100\"\u003eKérdőív kitöltése\u003c/a\u003e"';
echo json_encode(array(
'user_id' => $user_id,
'partner_id' => mysql_insert_id(),
'partner_nickname' => $partner_nickname,
'partner_description' => $partner_description,
'real_partner_id' => $real_partner_id,
'partner_survey' => $user_survey
));
?>
它在其他地方提供表格内容。由于链接或实际上任何文本都没有出现在合作伙伴调查部分中,因此运行不正常。
请注意,上面的代码适用于简单的字符串,例如$partner_survey="test";
或$partner_survey="test with some hun chars: ééóóúúűű";
正确运行。
以下链接用于生成和验证编码: http://edtracks.com/toolkit/decoder-encoder-json-html-url/,
答案 0 :(得分:2)
JSON要求字符串采用UTF8编码。我个人使用这些功能:
function getjson($json) {
$j = json_decode($json,true);
if( !$j) $j = Array();
array_walk_recursive($j,function(&$a) {if(is_string($a)) $a = utf8_decode($a);});
return $j;
}
function setjson($json) {
array_walk_recursive($json,function(&$a) {if(is_string($a)) $a = utf8_encode($a);});
$j = json_encode($json);
return $j;
}
虽然您应该注意到这些特别针对JSON编码的数组。他们会为这个特殊情况工作,但请记住这一点以便更广泛地使用。
旁注:您可以按如下方式确定UTF8是否存在问题:
// after attempting to json_encode data:
if( json_last_error() == JSON_ERROR_UTF8) echo "ERROR: Invalid encoding";