1

私の Facebook アプリは、json を渡す Facebook の ui メソッドを使用します。ただし、私のphp変数にはアポストロフィが含まれている可能性があります... fbメソッドに適切に渡しながら、それらを保持する最良の方法は何ですか?

    FB.ui(
    {
        method: 'feed',
        name: '<? echo $tname; ?>',
        link: '<? echo $short; ?>',
        caption: '<? echo $description; ?>'
    },
4

3 に答える 3

3

json_encodeを使用する

$myJSON = array(
    'method'      => 'feed',
    'name'        => $tag_line.' at '.$owner_name,
    'link'        => $short,
    'caption'     => $description,
    'description' => $short
);

$myJSON = json_encode($myJSON);

$myJSONには、JSON 形式のデータを含む文字列が含まれており、ページにエコーする準備ができています。

{
    "method"      : "feed",
    "name"        : "tag_line at owner_name",
    "link"        : "short",
    "caption"     : "description",
    "description" : "short"
}
于 2012-04-10T22:36:33.327 に答える
2

それらを「エスケープ」する必要があります。つまり、それらの前にバックスラッシュを追加します。

PHP には、これを実現するのに役立ついくつかの便利な関数があります: json_encode(特に JSON を適切にフォーマットするため) またはaddslashes.

ただし、入力によっては JSON の不適切な形式が出力される可能性があるため、この場合でjson_encodeはなくを使用する必要があります。addslashesaddslashes

于 2012-04-10T22:30:40.110 に答える
1

OP はアポストロフィをエスケープする必要があります。これは json_encode では実行されません。よく遭遇する問題は、json_encode を使用して php で json 文字列を生成し、javascript コードに配置する必要があることです (OP の例のように)。Javascript にはヒアドキュメント コメントがないため、解析エラーを防ぐために、アポストロフィまたは二重引用符をエスケープする必要があります。

次のようなもの:

jQuery.parseJSON('<?=str_replace("'", "\\\\u0027", json_encode(array('something' => "John's")))?>');

ただし、js 側で \u0027 のままになる場合があるため、これは最適ではありません。したがって、理想的には、js を使用して見積もりを翻訳するために使用したコードをすべて置き換える必要があります。

var code = '<?=parse(json_encode($data)) ?>';
code = code.replace(/\\\\u0027/g, "'");
jQuery.parseJSON(code);
于 2012-09-13T20:03:13.033 に答える