【问题标题】:Want to repeat the contents of a title tag into the html document itself想把一个title标签的内容重复到html文档本身
【发布时间】:2013-01-10 14:39:23
【问题描述】:

我的网站有数百万个页面,所有页面都是静态 html(实际上是 .shtml,但我已在服务器中将它们设置为解析为 .shtml,同时仍显示为 .html)。我可以在我的 html 文件中使用 Includes 和 php 脚本。 我在当前页面中使用如下包含语句:

<!--#include virtual="somefilename.html"-->
<!--#include virtual="somefilename.php"-->

我正在尝试在我的所有 .html 页面上添加 Facebook 社交标签:

<meta property="og:title" content="My Page Title" />

我需要与同一页面上&lt;title&gt;&lt;/title&gt; 标记之间存在的该标记相同的值。

所以,我需要提取&lt;title&gt;My Page Title&lt;/title&gt; 标签之间的数据,并在每个页面的&lt;meta property="og:title" content="My Page Title" /&gt; 内打印出来。

有人对此有解决方案吗?

【问题讨论】:

  • 请告诉我们您是否正在考虑使用“一次性脚本”来更新所有现有页面或其他内容。
  • 不是更新所有现有页面的一次性脚本。但是在运行时加载的脚本会抓取 之间的内容并将其粘贴到同一 html 文件中的 中。

标签: php html extract


【解决方案1】:

您应该使用诸如DOMDocument 之类的HTML 解析器来查找带有getElementsByTagName&lt;title&gt; 标签,然后输出您需要的内容,如下所示:

$doc = new DOMDocument;
$doc->loadHTML( '<title>My Page Title</title>'); 
// However you read in your HTML file, could even do:
// $doc->loadHTMLFile( '/my/server/root/index.html');

foreach( $doc->getElementsByTagName( 'title') as $title) {
    echo '<meta property="og:title" content="' . $title->textContents . '" />';
}

您可以将其用作加载所有 HTML 页面的脚本。因此,您可以将其放在服务器上的 PHP 文件中,然后运行一次。您需要为其添加一个包装器,以便它知道所有 HTML 文件的位置。你可以使用这样的东西:

foreach( glob( '*.html') as $filename) {
    // The above code, which you can now use $doc->loadHTMLFile( $filename);
}

【讨论】:

  • 感谢您的解决方案,但我很困惑。我在哪里添加上面的代码行?在 html 文件本身或 php 脚本中并在其中调用它。你能说得更具体点吗,因为我是这里的业余爱好者。谢谢!
  • 再次感谢,但我仍然没有正确理解。我知道我将代码的第一部分放在 php 脚本中。但是我应该在每个单独的 html 文件中添加什么来引用或打印输出。
  • @user - 无 - 您使用此脚本修改所有 HTML 文件。该脚本旨在读取您的 HTML 文件,添加您需要的内容,然后将 HTML 文件写回。
猜你喜欢
  • 2016-04-20
  • 1970-01-01
  • 2019-06-16
  • 2013-12-21
  • 2014-08-30
  • 1970-01-01
  • 2021-08-08
  • 2015-06-10
  • 2012-09-24
相关资源
最近更新 更多