使用 PHP 自动执行 og:title 和 og:description 标签



我在一天中的大部分时间里都尝试自动化 og:title 和 og:description 标签,但没有成功。我有一个全局.php文件,其中包含一些常见的元标记,我想将其放在所有页面上。但是标题标签不包括在内,我按页面进行。我对元描述标签做同样的事情。所以计划是在全局文件中添加 og:title 和 og:description,并使用一些 PHP 魔法来自动填充它们,并与<title><meta name="description"相同

首先,我已经阅读了 2 个小时,试图实现标题一,并提出了另一篇文章的建议。 我让这一行工作了好几个月,获取我当前的 URL(我将其用于"复制指向此页面的链接"按钮(

$url =  'https://'."{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
$escaped_url = htmlspecialchars( $url, ENT_QUOTES, 'UTF-8' );

所以我尝试以这种方式进行标题自动化:

$html = file_get_contents($escaped_url);
$title = preg_match("/<title>([^<]*)</title>/im", $html, $matches);

然后<meta property="og:title" content="<?=$title;?>">

但这会破坏我的网络服务器。无限期挂起。

即使是我用于执行描述标签的更简单,更干净的解决方案也会挂起我的服务器。

$tags = get_meta_tags($escaped_url);
$description = $tags['description'];
<meta property="og:description" content="<?=$description;?>">

你们对如何自动化它有任何想法,还是我应该删除它并在每个页面上手动完成?

事实上,你的服务器正在挂起,因为你调用的程序会调用自己来收集标题。这不是最好的方法。

我认为您应该在全局中添加所需的标记.php带有类似模板的值,例如:

<og:title value="{copy_meta_title}" />

然后,在所有页面中,您可以将值替换为实际值。

您可以使用ob_start和ob_get_clean,这可以帮助您在将内容发送到浏览器之前对其进行修改。

<?php //page.php
ob_start();
include('global.php');
$actual_title = "actual_title";
echo "<title>$actual_title</title>"
$head = ob_get_clean();
$head = str_replace('{copy_meta_title}',$actual_title,$head);
echo $head;
?>

代码可能有错误,它是即时编写的:)

最新更新