(.*?)<\/title>/is', $content, $m)) {
$meta['title'] = trim($m[1]);
}
// Meta description
if (preg_match('/<meta\s+name=["\']description["\']\s+content=["\'](.*?)["\']/is', $content, $m)) {
$meta['description'] = trim($m[1]);
}
// Canonical
if (preg_match('/<link\s+rel=["\']canonical["\']\s+href=["\'](.*?)["\']/is', $content, $m)) {
$meta['canonical'] = trim($m[1]);
}
return $meta;
}
// --------------------------------------------------
// Utility: replace or insert title/description/canonical
// --------------------------------------------------
function updateMetaInContent(string $content, string $newTitle, string $newDescription, string $newCanonical): string {
// TITLE
if ($newTitle !== '') {
if (preg_match('/<title>.*?<\/title>/is', $content)) {
$content = preg_replace(
'/<title>.*?<\/title>/is',
'<title>' . htmlspecialchars($newTitle, ENT_QUOTES) . '
https://www.constitutionallycorrect.online/seo/seo.php