回答編集履歴

1

例を追記

2018/09/12 13:51

投稿

tanat
tanat

スコア18713

test CHANGED
@@ -44,4 +44,62 @@
44
44
 
45
45
  ```
46
46
 
47
- となっているのは、PHPシリアライズ型のデータを複数個同じレコードで管理するために、CakePHPが独自の形式で持っているのだと思われます。
47
+ `Config|`の様形式になっているのは、PHPシリアライズ型のデータを複数個同じレコードで管理するために、CakePHPが独自の形式で持っているのだと思われます。
48
+
49
+
50
+
51
+ 強いて言うなら以下の様な感じで取れると思いますが、**折角フレームワークが抽象化してくれている部分を無視してまで独自実装する様なことはするべきでは無いです**。
52
+
53
+
54
+
55
+ ```PHP
56
+
57
+ <?php
58
+
59
+
60
+
61
+ $str = 'Config|a:1:{s:4:"time";i:1536737268;}
62
+
63
+ Auth|a:1:{s:4:"User";a:16:{s:2:"id";s:16:"hoge";s:5:"email";s:15:"hoge@example.com";s:4:"name";s:16:"hoge";s:11:"comment";N;}
64
+
65
+ Flash|a:0:{}';
66
+
67
+
68
+
69
+ var_dump(readSession("Config",$str));
70
+
71
+
72
+
73
+ function readSession($key, $str){
74
+
75
+ $sessionValueList = explode(PHP_EOL,$str);
76
+
77
+ foreach($sessionValueList as $sessionValue){
78
+
79
+ $session = explode("|",$sessionValue);
80
+
81
+ if($session[0] === $key){
82
+
83
+ return unserialize($session[1]);
84
+
85
+ }
86
+
87
+ }
88
+
89
+
90
+
91
+ return null;
92
+
93
+ }
94
+
95
+ ```
96
+
97
+ //実行結果
98
+
99
+ array(1) {
100
+
101
+ ["time"]=>
102
+
103
+ int(1536737268)
104
+
105
+ }