如何使用 PHP 动态生成 HTML 页面?

Posted

技术标签:

【中文标题】如何使用 PHP 动态生成 HTML 页面?【英文标题】:How to generate a HTML page dynamically using PHP? 【发布时间】:2013-01-30 00:42:59 【问题描述】:

我有一个页面,它根据来自 url 的唯一 ID 显示有关属性的信息,在 mysql 数据库中搜索该 ID,从该行获取所有信息等,确实相当标准。

我想知道是否/如何为每个数据库行“创建”一个 html 页面,因为我假设这对 SEO 会更好?拥有多个包含关键字的页面而不是一个动态页面?

我的属性是通过网站上的表单/上传系统添加到数据库中的,我想在上传时创建页面可能最简单,但我愿意接受建议!

【问题讨论】:

我试图(在某种程度上)创建我自己的,比任何东西都更适合学习 您使用什么语言来编写网页? 你想搜索php url rewriting然后 【参考方案1】:

以防万一有人想要生成/创建实际的HTML 文件...

$myFile = "filename.html"; // or .php   
$fh = fopen($myFile, 'w'); // or die("error");  
$stringData = "your html code php code goes here";   
fwrite($fh, $stringData);
fclose($fh);

享受吧!

【讨论】:

我有一个文档,它将打印html 文档。与html 文档一起,它来自主php 文档的变量。如何将主 php 文档中的变量打印到动态创建的 html 文档中?【参考方案2】:

我想知道是否/如何为每个数据库行“创建”一个 html 页面

您只需要创建一个php 文件来生成一个html 模板,改变的是该页面上基于文本的内容。在该页面中,您可以通过POSTGET 获取参数(例如行ID),然后从数据库中获取信息。

我假设这对 SEO 会更好?

Google 的搜索引擎解释 example.php?id=33example.php?id=44 是不同的页面,是的,从 SEO 的角度来看,这种方式比单个列表页面更好,所以你只需要两个php 文件至少(listing.phpsingle.php),因为最好从listing.php 链接此页面。

额外建议:

example.php?id=33 真的很丑而且对 seo 不太友好,也许你需要一些 url 重写代码。像example/properties/property-name 这样的东西更好;)

【讨论】:

接受了这一点,因为它提供了一些有用的额外信息,谢谢,我回家后试试看【参考方案3】:

根据您的要求,您不必动态生成 html 页面。它可以通过 .htaccess 文件。

这仍然是生成 HTML 页面的示例代码

<?php

 $filename = 'test.html';
 header("Cache-Control: public");
 header("Content-Description: File Transfer");
 header("Content-Disposition: attachment; filename=$filename");
 header("Content-Type: application/octet-stream; ");
 header("Content-Transfer-Encoding: binary");
?>

您可以创建任何 .html 、 .php 文件,只需更改文件名的扩展名

【讨论】:

如果你解释你的答案而不是仅仅提供示例代码会有所帮助... 请提供更多解释【参考方案4】:

您不需要生成任何动态html页面,只需使用.htaccess文件并重写URL即可。

【讨论】:

你必须完成你的答案。【参考方案5】:

我一直在从事与此类似的工作,并且我有一些代码可能会对您有所帮助。活生生的例子是here,下面是我用来供您参考的代码。

create-page.php

<?php

// Session is started.
session_start();

// Name of the template file.
$template_file = 'couples-template.php';

// Root folder if working in subdirectory. Name is up to you ut must match with server's folder.
$base_path = '/couple/';

// Path to the directory where you store the "couples-template.php" file.
$template_path = '../template/';

// Path to the directory where php will store the auto-generated couple's pages.
$couples_path = '../couples/';

// Posted data.
$data['groom-name'] = str_replace(' ', '', $_POST['groom-name']);
$data['bride-name'] = str_replace(' ', '', $_POST['bride-name']);
// $data['groom-surname'] = $_POST['groom-surname'];
// $data['bride-surname'] = $_POST['bride-surname'];
$data['wedding-date'] = $_POST['wedding-date'];
$data['email'] = $_POST['email'];
$data['code'] = str_replace(array('/', '-', ' '), '', $_POST['wedding-date']).strtoupper(substr($data['groom-name'], 0, 1)).urlencode('&').strtoupper(substr($data['bride-name'], 0, 1));

// Data array (Should match with data above's order).
$placeholders = array('groom-name', 'bride-name', 'wedding-date', 'email', 'code');

// Get the couples-template.php as a string.
$template = file_get_contents($template_path.$template_file);

// Fills the template.
$new_file = str_replace($placeholders, $data, $template);

// Generates couple's URL and makes it frendly and lowercase.
$couples_url = str_replace(' ', '', strtolower($data['groom-name'].'-'.$data['bride-name'].'.php'));

// Save file into couples directory.
$fp = fopen($couples_path.$couples_url, 'w');
fwrite($fp, $new_file);
fclose($fp);

// Set the variables to pass them to success page.
$_SESSION['couples_url'] = $couples_url;
// If working in root directory.
$_SESSION['couples_path'] = str_replace('.', '', $couples_path);
// If working in a sub directory.
//$_SESSION['couples_path'] = substr_replace($base_path, '', -1).str_replace('.', '',$couples_path);

header('Location: success.php');

?>

希望此文件可以帮助并作为参考来启动和推进您的项目。

【讨论】:

我试过这个解决方案..但是占位符没有替换..我需要这种解决方案..【参考方案6】:

看起来很有趣,但确实有效。

<?php 
$file = 'newpage.html';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new person to the file
$current .= "<!doctype html><html>
<head><meta charset='utf-8'>
<title>new file</title>
</head><body><h3>New HTML file</h3>
</body></html>
";
// Write the contents back to the file
file_put_contents($file, $current);
?>

【讨论】:

【参考方案7】:

我建议您使用 URL rewrite mod 足以解决您的问题,我有同样的问题,但使用 URL rewrite mod 并获得良好的 SEO 响应。我可以给你一个小例子。例如,您考虑使用 WordPress,这里的数据存储在数据库中,但使用 URL 重写模块,许多 WordPress 网站从 Google 获得了良好的响应并获得了排名。

示例: wordpress url 没有 url rewrite mod -- domain.com/?p=123 url 重写模式后 -- domain.com/title of article like domain.com/seo-url-rewrite-mod

我想你已经明白我想对你说的了

【讨论】:

【参考方案8】:

我将更新代码以包含更改,并对其进行注释,以便您可以清楚地看到发生了什么......

<?php   
include("templates/header.htm");   

// Set the default name 
$action = 'index'; 
// Specify some disallowed paths 
$disallowed_paths = array('header', 'footer'); 
if (!empty($_GET['action']))  
    $tmp_action = basename($_GET['action']); 
    // If it's not a disallowed path, and if the file exists, update $action 
    if (!in_array($tmp_action, $disallowed_paths) && file_exists("templates/$tmp_action.htm")) 
        $action = $tmp_action; 
 
// Include $action 
include("templates/$action.htm"); 

include("templates/footer.htm");

【讨论】:

以上是关于如何使用 PHP 动态生成 HTML 页面?的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的动态密码生成[重复]

如何将动态 (PHP) 网站存档为静态 HTML? [关闭]

mPDF 中动态生成页面的页码

利用js动态生成一个简单的商品详情页

怎样将discuz的动态页面生成HTML的静态页面,以便搜索引擎更好的收录我的网站呢?请高手多多指导!

如何使动态或生成的 HTML 页面可保存?