/** * Unserialize data * @param string $data * @return Page */ public function unserialize($filePath, $data = null) { if ($data === null) { $data = $filePath; $filePath = ''; } $headerInfos = preg_split("/\\s[-=]{3,}\\s+/", $data, 2); $headerData = trim($headerInfos[0]); preg_match_all("/(\\w+(?:\\[\\])?)[\\s:=]+(.+)/", $headerData, $headerMatches); $page = new Page(); $pageInfo = array(); for ($i = 0; $i < count($headerMatches[1]); ++$i) { $key = trim($headerMatches[1][$i]); $key = strtolower($key); $val = rtrim($headerMatches[2][$i], "\r\n"); if (strlen($key) > 2 && substr($key, -2) === '[]') { $val = preg_split("/[\\s,]+/", $val); } $pageInfo[$key] = $val; } $page = Page::pageFactory($pageInfo); $page->url = $filePath; $page->content = $headerInfos[1]; return $page; }