1

複数のサーバーで実行され、2 つのサーバーからわずかに異なる文字列を生成する 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 はリクエストの前に a:3: などの追加情報を追加しており、サーバー 2 はそれらの詳細を省略していますが、スラッシュはエスケープしています。

質問: a:3: 、 s:9: は一般的なエンコーディングですか、それともサーバー構成によってリクエストに追加される可能性があるものですか? 私はフォーマットに慣れていないので、それが一般的なものなのだろうかと思っています。私の目標は、PHP プログラムが追加情報を追加したのか、それともサーバー構成を追加したのかを把握することです。

4

3 に答える 3

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)
于 2012-10-26T19:07:35.523 に答える
1

最初の形式は でエンコードされた php シリアル化された変数serializeで、2 番目の形式はJSON

于 2012-10-26T19:07:01.950 に答える
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);
于 2012-10-26T19:09:27.983 に答える