0

我的网站有数百万个页面,所有页面都是静态 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" />

我需要此标签的值<title></title>与同一页面上的标签之间存在的值相同。

因此,我需要提取<title>My Page Title</title>标签之间的数据并在<meta property="og:title" content="My Page Title" />每个页面中打印它们。

有人对此有解决方案吗?

4

1 回答 1

1

您应该使用 HTML 解析器,例如DOMDocument查找<title>带有 的标签getElementsByTagName,然后输出您需要的内容,如下所示:

$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);
}
于 2013-01-10T14:42:27.677 回答