PHP - 如何在包含 header.php 之后更改页面的元内容?
PHP - how to change meta contents of the page AFTER including header.php?
Page.php
<?ob_start():
include('header.php');
?>
<? $pageTitle='Page';
echo 'body html';
?>
<?
$pg=ob_get_contents();
ob_end_clean();
echo str_replace('<!--TITLE-->',$pageTitle,$pg);
?>
header.php
<!-- Basic -->
<title><!--TITLE--> | DEMO</title>
<!-- Page Description and Author -->
<meta name="description" content="">
<meta name="author" content="">
在页面顶部插入 header.php 文件后,如何在我的 page.php 中包含元描述内容和作者内容以及其他元名称?
所以我知道您必须 php 包含 html 内容的文件,并且您想将 'header.php' 的元数据 'description' 和 'author' 复制到'page.php'.
无法通过php获取html内容。您可以将元 'description' 和 'author' 保存在一个变量中并将元写入 'header.php' 并将这些变量获取到 'page.php'
header.php:
<html>
<head>
<title>DEMO</title>
<?php
$description = '...';
$author = 'me';
echo '<meta name="description" content="'.$description.'">';
echo '<meta name="author" content="'.$author.'">';
function getDescription(){
return $description;
}
function getAuthor(){
return $author;
}
?>
</head>
<body>...</body>
</html>
page.php:
<html>
<head>
<title>DEMO</title>
<?php
$description = getDescription();
$author = getAuthor();
echo '<meta name="description" content="'.$description.'">';
echo '<meta name="author" content="'.$author.'">';
?>
</head>
<body>...</body>
</html>
与其使用某种字符串操作在某处插入文本,不如构造您的应用程序,以便您的业务逻辑先运行,然后模板代码再运行。在你写出任何东西之前,弄清楚你想要你的标题和其他元数据是什么。
如果您不喜欢修改头文件..您可以执行以下操作...但我建议您使您的代码结构比这更好:(它需要更动态
<?php
ob_start();
include('header.php');
$pageTitle='Page';
echo 'body html';
$pg=ob_get_contents();
$description = 'your description';
$author = 'your author';
//delete old desc and author
$pg = str_replace('content=""', '', $pg);
//add anew desc and author
$pg = str_replace('name="description"', 'name="description" content="'.$description.'" ', $pg);
$pg = str_replace('name="author"', 'name="author" content="'.$author.'" ', $pg);
ob_end_clean();
echo str_replace('<!--TITLE-->',$pageTitle,$pg);
?>
您可以在 ob_start 调用中定义回调函数,该调用记录在 ob_start 网页的示例 #1 中。
function modify_header($buffer)
{
// do your changes in $buffer here
}
ob_start(modify_header);
无论如何,我建议使用一些模板框架来完成所有此类工作
Page.php
<?ob_start():
include('header.php');
?>
<? $pageTitle='Page';
echo 'body html';
?>
<?
$pg=ob_get_contents();
ob_end_clean();
echo str_replace('<!--TITLE-->',$pageTitle,$pg);
?>
header.php
<!-- Basic -->
<title><!--TITLE--> | DEMO</title>
<!-- Page Description and Author -->
<meta name="description" content="">
<meta name="author" content="">
在页面顶部插入 header.php 文件后,如何在我的 page.php 中包含元描述内容和作者内容以及其他元名称?
所以我知道您必须 php 包含 html 内容的文件,并且您想将 'header.php' 的元数据 'description' 和 'author' 复制到'page.php'.
无法通过php获取html内容。您可以将元 'description' 和 'author' 保存在一个变量中并将元写入 'header.php' 并将这些变量获取到 'page.php'
header.php:
<html>
<head>
<title>DEMO</title>
<?php
$description = '...';
$author = 'me';
echo '<meta name="description" content="'.$description.'">';
echo '<meta name="author" content="'.$author.'">';
function getDescription(){
return $description;
}
function getAuthor(){
return $author;
}
?>
</head>
<body>...</body>
</html>
page.php:
<html>
<head>
<title>DEMO</title>
<?php
$description = getDescription();
$author = getAuthor();
echo '<meta name="description" content="'.$description.'">';
echo '<meta name="author" content="'.$author.'">';
?>
</head>
<body>...</body>
</html>
与其使用某种字符串操作在某处插入文本,不如构造您的应用程序,以便您的业务逻辑先运行,然后模板代码再运行。在你写出任何东西之前,弄清楚你想要你的标题和其他元数据是什么。
如果您不喜欢修改头文件..您可以执行以下操作...但我建议您使您的代码结构比这更好:(它需要更动态
<?php
ob_start();
include('header.php');
$pageTitle='Page';
echo 'body html';
$pg=ob_get_contents();
$description = 'your description';
$author = 'your author';
//delete old desc and author
$pg = str_replace('content=""', '', $pg);
//add anew desc and author
$pg = str_replace('name="description"', 'name="description" content="'.$description.'" ', $pg);
$pg = str_replace('name="author"', 'name="author" content="'.$author.'" ', $pg);
ob_end_clean();
echo str_replace('<!--TITLE-->',$pageTitle,$pg);
?>
您可以在 ob_start 调用中定义回调函数,该调用记录在 ob_start 网页的示例 #1 中。
function modify_header($buffer)
{
// do your changes in $buffer here
}
ob_start(modify_header);
无论如何,我建议使用一些模板框架来完成所有此类工作