识别方法向字符串添加其他字符(编码/转义)

时间:2012-10-26 19:01:44

标签: php encoding escaping

我正在使用在多个服务器上运行的PHP程序,并从两个服务器生成略有不同的字符串。

**Server 1 Request Data:**

a:10:{s:9:"locale";s:5:"en_US","url";s:18:"https://testingurl.com/index.php";}

**Server 2 Request Data:**

{"locale":"en_US","url":"https:\/\/testingurl.com\/index.php";}

两个服务器都发送相同的变量,但格式略有不同。服务器1在请求之前添加了附加信息,例如:3:服务器2省略了这些细节,但是转发了正斜杠。

问题: a:3:,s:9:常见的编码,或服务器配置可能添加到请求的内容?我不熟悉这种格式,不知道它是否是常见的东西。我的目标是弄清楚它是否是添加附加信息或服务器配置的PHP程序。

3 个答案:

答案 0 :(得分:2)

很容易

当前问题

此序列化格式无效

a:10:{s:9:"locale";s:5:"en_US","url";s:18:"https://testingurl.com/index.php";}
   ^    ^                               ^
   2    6                              32

我觉得它应该是这样的

$server1 = 'a:2:{s:6:"locale";s:5:"en_US";s:3:"url";s:32:"https://testingurl.com/index.php";}';
var_dump(unserialize($server1));

$server2 = '{"locale":"en_US","url":"https:\/\/testingurl.com\/index.php"}';
var_dump(json_decode($server2, true));

输出

array
  'locale' => string 'en_US' (length=5)
  'url' => string 'https://testingurl.com/index.php' (length=32)

答案 1 :(得分:1)

第一种格式是用serialize编码的php序列化变量,第二种是JSON

答案 2 :(得分:1)

a:10和s:9和类似字符是PHP序列化,而整个字符串看起来像是JSON编码。也就是说,格式看起来很糟糕(我假设你刚刚省略了一些输出),但这里有一个如何生成这个的例子:

 $a=json_encode(array('locale'=>'en_US','url'=>'https://testingurl.com/index.php'));
 echo $a;
 echo "<br />";
 echo serialize($a);