date("Y-m-d"), "title" => $id, "author" => "Blogchain", "cover" => null, "extract" => "" ]; $propertiesMode = false; $propertiesDone = false; $cline = 0; $upline = 0; foreach ($lines as $line) { if (!$propertiesDone) { if (trim($line) === "---") { if ($propertiesMode) { $propertiesDone = true; $propertiesMode = false; $upline = $cline + 1; } else { $propertiesMode = true; } } else if ($propertiesMode) { $parts = explode(":", $line); $p_ins = trim($parts[0]); array_shift($parts); $p_data = trim(implode(":", $parts)); switch ($p_ins) { case "date": $pp_dt = DateTime::createFromFormat('Y-m-d', $p_data); $list[$id]["date"] = $pp_dt->format("Ymd"); break; case "title": $list[$id]["title"] = $p_data; break; case "author": $list[$id]["author"] = explode("|", $p_data); break; case "cover": $list[$id]["cover"] = $p_data; break; } } } $cline++; } $i = 0; while ($i++ < $upline) { array_shift($lines); } $text = implode("\n", $lines); $list[$id]["content"] = []; $list[$id]["content"]["full"] = $Parsedown->text($text); $list[$id]["content"]["clean"] = strip_tags($list[$id]["content"]["full"]); if (strlen($list[$id]["content"]["clean"]) > 100) { $list[$id]["content"]["mini"] = substr($list[$id]["content"]["clean"], 0, 100) . "…"; } else { $list[$id]["content"]["mini"] = $list[$id]["content"]["clean"]; } } } return $list; }