file_get_contents添加额外的\ \斜杠

时间:2013-10-07 05:09:35

标签: php

我正在测试一个回调,它正在添加不必要的斜线,这阻碍了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"}"

我用虚拟信息替换了秘密和我网站的网址,以保持私密性 - 这不会产生任何影响。

正如您所看到的,它应该是http://myurlcantseeit.me/gg/blockchain_callback.php?secret=cantletyousee,但它会在任何地方添加反斜杠。

为什么以及如何解决此问题?

2 个答案:

答案 0 :(得分:4)

\是转义字符,这不会影响您的输出。

来自PHP escape sequences

  

反斜杠字符有多种用途。首先,如果遵循它   通过非字母数字字符,它消除了任何特殊含义   那个角色可能有。这种反斜杠用作转义字符   适用于内部和外部字符类。

是的,你可以在使用json_encode时添加一些选项,试一试,可以帮到你

json_encode($response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );

答案 1 :(得分:0)

如果要删除反斜杠,可以使用str_replace()

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

顺便说一下,我尝试用json_decode()解码你的字符串,并在做var_dump()时收到正确的信息(没有额外的\):

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"
}