public function render()
{
$output = '';
foreach ($this->metas as $name => $value) {
if (preg_match('/^link:?/i', $name)) {
if (!isset($value['rel'])) {
$value['rel'] = substr($name, 5);
}
$attributes = '';
foreach ($value as $attr => $val) {
$attributes .= sprintf(' %s="%s"', $attr, htmlspecialchars($val));
}
$output .= sprintf(" <link%s>\n", $attributes);
} else {
$value = htmlspecialchars($value);
if ($name == 'title') {
$output .= sprintf(" <title>%s</title>\n", $value);
} else {
if ($name == 'base') {
$output .= sprintf(" <base href=\"%s\">\n", $value);
} else {
if ($name == 'canonical') {
$output .= sprintf(" <link rel=\"%s\" href=\"%s\">\n", $name, $value);
} elseif (preg_match('/^(og|twitter|article):/i', $name)) {
$output .= sprintf(" <meta property=\"%s\" content=\"%s\">\n", $name, $value);
} else {
$output .= sprintf(" <meta name=\"%s\" content=\"%s\">\n", $name, $value);
}
}
}
}
}
return $output;
}