1

有人可以帮我将 JSON 语法的链接编码为 php 字符串变量吗? 要编码的 url(链接包含匈牙利字符,如 é):

<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/ ,

http://json.parser.online.fr/

4

1 回答 1

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";
于 2013-03-01T22:38:59.347 回答