經常性閉門造車,對PHP其他的事了解甚少。
今天在研究Typeche的時候又遇到了類似:
<code>a:2:{s:7:"logoUrl";N;s:12:"sidebarBlock";a:5:{i:0;s:15:"ShowRecentPosts";i:1;s:18:"ShowRecentComments";i:2;s:12:"ShowCategory";i:3;s:11:"ShowArchive";i:4;s:9:"ShowOther";}}</code>
<code><?php exit;//a:4:{i:4;a:1:{i:0;a:3:{s:6:"tagurl";s:18:"%E4%B8%8D%E7%9D%A1";s:7:"tagname";s:6:"不睡";s:3:"tid";i:2;}}i:3;a:1:{i:0;a:3:{s:6:"tagurl";s:18:"%E6%B0%B4%E6%B0%B4";s:7:"tagname";s:6:"水水";s:3:"tid";i:1;}}i:2;a:0:{}i:1;a:0:{}}</code>
的資料庫配置,想知道這個格式的配置的相關信息,百度也不好百度,今天跟踪代碼也沒找到,求各位大大指點一下。
經常性閉門造車,對PHP其他的事了解甚少。
今天在研究Typeche的時候又遇到了類似:
<code>a:2:{s:7:"logoUrl";N;s:12:"sidebarBlock";a:5:{i:0;s:15:"ShowRecentPosts";i:1;s:18:"ShowRecentComments";i:2;s:12:"ShowCategory";i:3;s:11:"ShowArchive";i:4;s:9:"ShowOther";}}</code>
<code><?php exit;//a:4:{i:4;a:1:{i:0;a:3:{s:6:"tagurl";s:18:"%E4%B8%8D%E7%9D%A1";s:7:"tagname";s:6:"不睡";s:3:"tid";i:2;}}i:3;a:1:{i:0;a:3:{s:6:"tagurl";s:18:"%E6%B0%B4%E6%B0%B4";s:7:"tagname";s:6:"水水";s:3:"tid";i:1;}}i:2;a:0:{}i:1;a:0:{}}</code>
的資料庫配置,想知道這個格式的配置的相關信息,百度也不好百度,今天跟踪代碼也沒找到,求各位大大指點一下。
php序列化的結果
透過unserialize可以將這個字串轉為php變數。
今天強行想找如下格式的儲存文件是由啥產生的:
<code>a:4:{i:4;a:1:{i:0;a:3:{s:6:"tagurl";s:18:"%E4%B8%8D%E7%9D%A1";s:7:"tagname";s:6:"不睡";s:3:"tid";i:2;}}i:3;a:1:{i:0;a:3:{s:6:"tagurl";s:18:"%E6%B0%B4%E6%B0%B4";s:7:"tagname";s:6:"水水";s:3:"tid";i:1;}}i:2;a:0:{}i:1;a:0:{}}</code>
媽的智障,先在Typecho找了3個小時,使出渾身解數還是沒發現。 。 。 。 。 。
吐血的是,聯想到Emlog這個PHP程式的快取就是這種格式的,MDZZ的我稍微一追蹤就看到了程式碼:
<code class="php">$cacheData = serialize($tag_cache); $this->cacheWrite($cacheData, 'tags');</code>
一切水落石出了,MDZZ。 。 。 。虧我花了3小時,太他媽浪費時間了!
<code class="php"> function MDZZ() { $array=['name'=>'DXKite','type'=>'智障']; $str=serialize($array); var_dump($str); var_dump(unserialize($str)); }</code>
輸出:
<code>string(54) "a:2:{s:4:"name";s:6:"DXKite";s:4:"type";s:6:"智障";}" array(2) { ["name"]=> string(6) "DXKite" ["type"]=> string(6) "智障" }</code>
php語言裡,陣列內容想要直接儲存到資料庫中,常常會用到serialize,但是呢,serialize常常會出現一些莫名其妙的錯誤,encode編碼效率不如json_encode,且產生編碼量比json_encode多。
建議使用json_encode。
做快取常用到serialize