文字列の_(\)
_ backslashを削除する方法は? echo json_encode()
を使用する場合
例えば:
_<?php
$str = "$(\"#output\").append(\"<p>This is a test!</p>\")";
echo json_encode($str);
?>
_
注:$ strをエコーすると問題はありませんが、json_encode()
を使用してエコーアウトすると、_(\)
_ backslashが表示されます。
これを解決する方法はありますか?
json_encode($response, JSON_UNESCAPED_SLASHES);
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定数のリスト:
動作するソリューションはこれです:
$str = preg_replace('/\\\"/',"\"", $str);
ただし、すべての値の引用符がエスケープされていることを確認する必要があるため、ここでは非常に注意する必要があります(とにかく真であるが、特に今ではPHPのばかげた(および機能不全の)ヘルパーからすべてのエスケープを削除するためすべてのオブジェクトIDと値の前に不要なバックスラッシュを追加する機能)。
そのため、デフォルトでは、phpは引用符を含む値を二重エスケープします。したがって、My name is "Joe"
DBの場合、phpはこれをMy name is \\"Joe\\"
。
これはあなたにとって役に立つかもしれませんし、そうでないかもしれません。そうでない場合は、次のように先頭のスラッシュを置き換える追加の手順を実行できます。
$str = preg_replace('/\\\\\"/',"\"", $str);
うん...それはい...しかしそれは動作します。
その後、実際のJSONに漠然と似たものが残ります。
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"
より簡単な方法は
$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);
HungryDBによると、これを行うための簡単な方法は次のとおりです。
$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);
このパラメータはバージョン5.4.0で追加されたため、PHPバージョンを確認してください
はい、可能です。見て!
$str = str_replace('\\', '', $str);
しかし、なぜあなたはしたいのですか?
PHP 5.2を使用する場合、json_encodeは呼び出すときに1つのパラメーターのみを期待します。これは、json値のアンエスケープスラッシュに代わるものです。
stripslashes(json_encode($array))
データが複雑な場合は使用しないでください。
削除したくありません。 JSONは文字列に二重引用符 ""を使用し、あなたの名前は
"$(\"#output\").append(\"
This is a test!<\/p>\")"
これらのバックスラッシュはこれらの引用符をエスケープします
以下を使用してスラッシュを削除します
echo json_decode($mystring, JSON_UNESCAPED_SLASHES);