0

コールバックをテストしていますが、サーバーと正常に通信する API の機能を妨げている不要なスラッシュが追加されています。これらのスラッシュを追加するのはなぜですか?どうすれば状況を改善できますか? 以下のコード:

<?php

$real_secret = 'cantletyousee';

$my_address = '16qVmcFj6EergwQuiXLqHucBC2BZzdpMfo';

$my_callback_url = 'http://myurlcantseeit.me/gg/blockchain_callback.php?secret=' . $real_secret;

$root_url = 'https://blockchain.info/api/receive';

$parameters = 'method=create&callback='. urlencode($my_callback_url) . '&address=' . $my_address;

$response = file_get_contents($root_url . '?' . $parameters);
var_dump($response);

$object = json_decode($response);

?>

var ダンプが返されます:string(203) "{"input_address":"1MtYhCDEq1euiV7PjL58XtjfwTgX3Bqqpe","callback_url":"http:\/\/myurlcantseeit.me\/gg\/blockchain_callback.php?secret=cantletyousee","fee_percent":0,"destination":"16qVmcFj6EergwQuiXLqHucBC2BZzdpMfo"}"

シークレットとサイトの URL をダミーの情報に置き換えて、非公開にしましたが、違いはありません。

ご覧のとおり、 http://myurlcantseeit.me/gg/blockchain_callback.php?secret=cantletyouseeのはずですが、どこにでもバックスラッシュが追加されています。

なぜ、どうすればこれを修正できますか?

4

2 に答える 2

4

\はエスケープ文字です。これは出力には影響しません。

PHPエスケープシーケンスから

バックスラッシュ文字にはいくつかの用途があります。まず、英数字以外の文字が続くと、その文字が持つ特別な意味が取り除かれます。エスケープ文字としてのこのバックスラッシュの使用は、文字クラスの内側と外側の両方に適用されます。

はい、使用中にいくつかのオプションを追加できますjson_encode。試してみてください。役立つ場合があります

json_encode($response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
于 2013-10-07T05:19:55.200 に答える
0

バックスラッシュを削除したい場合は、str_replace()を使用できます

$str2 = str_replace ('\\', '', $response);

ところで、var_dump() を実行しているときに、文字列をデコードjson_decode()して正しい情報 (余分な なし) を受け取りました:\

class stdClass#1 (4) {
  public $input_address =>
  string(34) "1MtYhCDEq1euiV7PjL58XtjfwTgX3Bqqpe"
  public $callback_url =>
  string(72) "http://myurlcantseeit.me/gg/blockchain_callback.php?secret=cantletyousee"
  public $fee_percent =>
  int(0)
  public $destination =>
  string(34) "16qVmcFj6EergwQuiXLqHucBC2BZzdpMfo"
}
于 2013-10-07T05:20:10.463 に答える