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 に答える