我的网站有数百万个页面,所有这些页面都是静态的html(实际上是.shtml,但是我已经在服务器中将它们设置为解析为.shtml,同时仍然显示为.html)。我可以在我的html文件中使用Includes和php脚本。 我在当前页面中使用如下所示的include语句:
<!--#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" />
内打印。
有人有解决方案吗?
答案 0 :(得分:1)
您应该使用DOMDocument
之类的HTML解析器来查找<title>
$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 . '" />';
}
标签,然后输出您需要的内容,如下所示:
foreach( glob( '*.html') as $filename) {
// The above code, which you can now use $doc->loadHTMLFile( $filename);
}
您可以将其用作加载所有HTML网页的脚本。因此,您可以将其放在服务器上的PHP文件中,并运行一次。您需要为其添加一个包装器,以便它知道所有HTML文件的位置。你可以使用这样的东西:
{{1}}