43

文字列のバックスラッシュを削除するには(\)? を使用するecho json_encode()場合

例えば:

<?php
$str = "$(\"#output\").append(\"<p>This is a test!</p>\")";

echo json_encode($str);
?>

注: $str を echo すると問題はありませんが、 を使用して echo out するとjson_encode()(\)バックスラッシュが表示されます。

これを解決する方法はありますか?

4

10 に答える 10

80
json_encode($response, JSON_UNESCAPED_SLASHES);
于 2011-09-02T11:31:13.913 に答える
9

うまくいく解決策はこれです:

$str = preg_replace('/\\\"/',"\"", $str);

ただし、すべての値の引用符がエスケープされていることを確認する必要があるため、ここでは細心の注意を払う必要があります (これは一般的には当てはまりますが、PHP のばかげた (そして機能不全の) ヘルパーからすべてのエスケープを取り除くことになるため、特にそうです)。 " すべてのオブジェクト ID と値の前に不要なバックスラッシュを追加する機能)。

したがって、デフォルトでは、php は引用符を含む値をダブルエスケープするため、My name is "Joe"DB に の値がある場合、php はこれを として戻します My name is \\"Joe\\"

これはあなたにとって役立つかもしれないし、役に立たないかもしれません。そうでない場合は、次のように先頭のスラッシュを置き換える追加の手順を実行できます。

$str = preg_replace('/\\\\\"/',"\"", $str);

ええ...醜いです...でもうまくいきます。

そうすると、実際の JSON に漠然と似たものが残ります。

于 2013-01-12T23:04:24.353 に答える
5

より簡単な方法は

$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);
于 2014-12-10T08:54:25.207 に答える
5

json_encode一重引用符内で使用されている場合にのみエスケープすることがわかりました\n

echo json_encode("Hello World\n");
// results in "Hello World\n"

echo json_encode('Hello World\n');
// results in "Hello World\\\n"
于 2016-05-13T11:55:44.320 に答える
3

HungryDBが言ったように、それを行うためのより簡単な方法は次のとおりです。

$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);

このパラメーターはバージョン 5.4.0 で追加されているため、php のバージョンを確認してください。

json_encode ドキュメント

于 2016-02-18T09:29:43.043 に答える
3

はい、可能です。見て!

$str = str_replace('\\', '', $str);

しかし、なぜあなたはしたいのですか?

于 2011-09-02T14:20:36.600 に答える
1

削除したくありません。JSONは文字列に二重引用符 " " を使用し、あなたのものが返すため

"$(\"#output\").append(\"
This is a test!<\/p>\")"

これらのバックスラッシュはこれらの引用符をエスケープします

于 2011-09-02T11:32:11.607 に答える