【问题标题】:Automate the og:title and og:description tags with PHP使用 PHP 自动化 og:title 和 og:description 标签
【发布时间】:2020-05-24 14:07:17
【问题描述】:

我在一天的大部分时间里都没有成功地尝试自动化 og:title 和 og:description 标签。我有一个 global.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);

然后&lt;meta property="og:title" content="&lt;?=$title;?&gt;"&gt;

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

即使是我做描述标签的更简单、更干净的解决方案也会挂起我的服务器。

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

你们对如何自动执行此操作有任何想法,还是我应该放弃它并在每个页面上手动执行?

【问题讨论】:

  • 您正在创建一个无限循环的请求。您正在做的是请求您自己的网络服务器找出标题,该请求将为您自己的网络服务器创建另一个请求,依此类推。
  • 我建议您看看您的网络服务器如何生成您的标题并复制该逻辑。

标签: php facebook-opengraph


【解决方案1】:

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

我认为您应该在 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;
?>

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

【讨论】:

  • 这很有趣。我如何使这项工作 -
  • 查看提供的代码,只需对从ob_get_clean收集的内容进行str_replace,其中包含global.php的所有输出内容
  • 如果变量是全局变量,您可以使用它来代替 {copy_meta_title}。
猜你喜欢
  • 1970-01-01
  • 2019-12-24
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 2011-08-20
  • 1970-01-01
  • 2013-11-11
相关资源
最近更新 更多