php - 使用 PHP 自动化 og:title 和 og:description 标签
问题描述
在一天的大部分时间里,我都没有成功地尝试自动化 og:title 和 og:description 标签。我有一个 global.php 文件,其中包含一些我希望在所有页面上出现的常见元标记。但是不包括标题标签,我是按页面进行的。我对元描述标签做同样的事情。所以计划是在全局文件中添加 og:title 和 og:description 并使用一些 PHP 魔法来自动填充它们并与 and<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;?>">
你们对如何自动化这个有任何想法,还是我应该放弃它并在每个页面上手动完成?
解决方案
实际上,您的服务器正在挂起,因为您调用的程序会调用自己来收集标题。这不是最好的方法。
我认为您应该在 global.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;
?>
代码可能有错误,因为它是动态编写的:)
推荐阅读
- python-3.x - 如何在windows的python 3.7版本中安装paramiko
- ffmpeg - 让 Discord 机器人从直接 url 播放声音
- splunk - 根据 Session 过滤器 Splunk 获取 Previous Session 数据
- python - 在处理列表时,Python 中哪个更好 - reverse() 或 list[::-1] 还是有其他更有效的方法?
- c# - 如何将对象列表保存到 Firestore
- javascript - 动态设置选择选项的值
- c - 我们什么时候应该在 C 中使用“外部常量”?
- sharepoint-online - SPO 限制少数选定的文件扩展名
- sql - 根据事件的最短日期将数据分组到不同的表中
- python - python提取域/子域