web-dev-qa-db-ja.com

json_encode()関数のバックスラッシュを削除する方法は?

文字列の_(\)_ backslashを削除する方法は? echo json_encode()を使用する場合

例えば:

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

echo json_encode($str);
?>
_

注:$ strをエコーすると問題はありませんが、json_encode()を使用してエコーアウトすると、_(\)_ backslashが表示されます。

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

19
Ryan
json_encode($response, JSON_UNESCAPED_SLASHES);
26
Rijk

PHP 5.4であるため、json_encode()で使用できる定数があり、json応答を希望どおりにフォーマットします。

バックスラッシュを削除するには、JSON_UNESCAPED_SLASHES。そのようです:

json_encode($response, JSON_UNESCAPED_SLASHES);

定数と詳細については、PHPのドキュメントをご覧ください。

http://php.net/manual/en/function.json-encode.php

JSON定数のリスト:

http://php.net/manual/en/json.constants.php

48
Daveloper87

動作するソリューションはこれです:

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

ただし、すべての値の引用符がエスケープされていることを確認する必要があるため、ここでは非常に注意する必要があります(とにかく真であるが、特に今ではPHPのばかげた(および機能不全の)ヘルパーからすべてのエスケープを削除するためすべてのオブジェクトIDと値の前に不要なバックスラッシュを追加する機能)。

そのため、デフォルトでは、phpは引用符を含む値を二重エスケープします。したがって、My name is "Joe" DBの場合、phpはこれをMy name is \\"Joe\\"

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

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

うん...それはい...しかしそれは動作します。

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

8
Genia S.

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"
5
totas

より簡単な方法は

$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);
4
HungryDB

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

$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);

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

json_encode documentation

3
suarsenegger

はい、可能です。見て!

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

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

3
Yeroon

PHP 5.2を使用する場合、json_encodeは呼び出すときに1つのパラメーターのみを期待します。これは、json値のアンエスケープスラッシュに代わるものです。

stripslashes(json_encode($array))

データが複雑な場合は使用しないでください。

3
Vuong

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

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

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

1
genesis

以下を使用してスラッシュを削除します

echo json_decode($mystring, JSON_UNESCAPED_SLASHES);
1
n4zg