ホームページ >バックエンド開発 >PHPチュートリアル >PHP コードで HTML ファイルを直接保存できないのはなぜですか??> PHP で静的ページを生成するチュートリアル
1、服务器会根据文件的后缀名去进行解析,如果是HTML文件则服务器不会进行语法解析,而是直接输出到浏览器。2、如果一个页面中全部都是HTML代码而没有需要解析的PHP语法,则没有必要保存为PHP文件,这样反而会降低运行效率。3、如果是需要PHP控制HTML代码的输出,比如需要PHP判断用户是否登陆,如果登陆则输出A,未登录则输出B。这就需要PHP来进行控制了。HTML不能实现这样的功能
6a74014ee44f5deb5894267f99b68016 08eb756f81b28a01d33212cce3fbe742{ title }0e94189e2178ffcfb346fb78b3f60691 a64997a0904a094b4570728d7f327acd this is a { file } file's templets f2475bc0d02a524246eacdb398ec424e 6eac519e8537e4205ddd37e30a7b548a PHP处理: templetest.php Code: fde6d6cfdf34d1673c1b6ba004661c2b
804db79392ed6938073fa917ee87c481
106ae2cf92475f3c78286b58ae75a221
提纲:
===================================
分离功能和布局
避免页面元素重复
静态网站的模板框架
===================================
339470eed18cad156c986b01b55f0f10 100db36a723c770d327fc0aef2ce13b1 93f0f5c25f18dab9d176bd4f6de5d30eb2386ffb911b14667cb8f0f91ea547a7模板示例6e916e0f7d1e588d4f442bf645aedb2f9c3bca370b5104690d9ef395f2c5f8d1 6c04bd5ca3fcae76e30b72ad730ca86d f5d188ed2c074f8b944552db028f98a1a34de1251f0d9fe1e645927f19a896e8b6c5a531a458a2e790c1fd6421739d1c{HEADER}b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5 a34de1251f0d9fe1e645927f19a896e8b6c5a531a458a2e790c1fd6421739d1c{LEFTNAV}b90dd5946f0946207856a8a37f441edfb6c5a531a458a2e790c1fd6421739d1c{CONTENT}b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5 f16b1740fad44fb09bfe928bcc527e08 36cc49f0c466276486e50c850b7e495673a6ac4ed44ffec12cee46588e518a5ef7c34b795e36cb0bdd5acca12a6155de
d53e7fdd0bb373e711411d65518705f1define( array( 'main' => 'main.htm', 'header' => 'header.htm', 'leftnav' => 'leftnav.htm' ) ); // 此处的PHP代码设置$content使其包含合适的页面内容 $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->FastPrint('MAIN'); ?>
34fcf9637c5751aa861169ecd1d313e7define( array( 'main' => 'main.htm', 'header' => 'header.htm', 'leftnav' => 'leftnav.htm' ) ); $content = "e388a4556c0f65e1904146cc1a846bee欢迎访问94b3e26ee717c64999d7867364b1b4a3 a60a45df3f914dfc134345e6118ab4f8 e388a4556c0f65e1904146cc1a846bee希望你能够喜欢本网站94b3e26ee717c64999d7867364b1b4a3"; $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->FastPrint('MAIN'); ?>显然,这种方法有三个问题:我们必须为每一个页面复制这些复杂的、牵涉到模板的PHP代码,这与重复公共页面元素一样使得页面难以维护;现在文件又混合了HTML和PHP代码;为内容变量赋值将变得非常困难,因为我们必须处理好大量的特殊字符。
ab1a4b97627c40b1b35f86c498ecf6ea 089620409a59672edd3dcd143252f5b9 e38bed175ef960892eb0fc7cdb54b068 4a249f0d628e2318394fd9b75b4636b1你好473f0a7621bec819994bb5020d29372a e388a4556c0f65e1904146cc1a846bee欢迎访问94b3e26ee717c64999d7867364b1b4a3 49617cae776d8fa4c57c609865ba173f e388a4556c0f65e1904146cc1a846bee希望你能够喜欢本网站94b3e26ee717c64999d7867364b1b4a3 77761c0d2af5239aec122f2424427db6 ?>
614b72066711f3e3b7c521aa9a9f5242define( array( 'main' => 'main.htm', 'header' => 'header.htm', 'leftnav'=> 'leftnav.htm' ) ); $tpl->assign('TITLE', $title); ob_start(); } function pageFinish() { GLOBAL $tpl; $content = ob_get_contents(); ob_end_clean(); $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->FastPrint('MAIN'); } ?>pageStart函数首先创建并设置了一个模板实例,然后启用输出缓存。此后,所有来自页面本身的HTML内容都将进入缓存。pageFinish函数取出缓存中的内容,然后在模板对象中指定这些内容,最后解析模板并输出完成后的页面。
本文下载包包含
了一个可运行的示例网站,它的代码注释要比前面的代码注释更详细一些。FastTemplate类可以在http://www.thewebmasters.net/找到,最新的版本号是1.1.0,那里还有一个用于保证该类在PHP 4中正确运行的小补丁。本文下载代码中的类已经经过该补丁的修正。
PHP简易生成静态页面
e485c4b18d74422cd90c93d9d7d7f7ba 100db36a723c770d327fc0aef2ce13b1 93f0f5c25f18dab9d176bd4f6de5d30e 621339b2dae7a65b51c010b99284878b b2386ffb911b14667cb8f0f91ea547a7NEWS6e916e0f7d1e588d4f442bf645aedb2f 9c3bca370b5104690d9ef395f2c5f8d1 6c04bd5ca3fcae76e30b72ad730ca86d 9c46316f4c25529f288cc454c4adf8cc a34de1251f0d9fe1e645927f19a896e8 b6c5a531a458a2e790c1fd6421739d1c标题b90dd5946f0946207856a8a37f441edf d5ad9682ec96a50896e5a050f6add1a1发布时间b90dd5946f0946207856a8a37f441edf fd273fcf5bcad3dfdad3c41bd81ad3e5 d9a5d096298aaaab5901d3673c61ba0f a34de1251f0d9fe1e645927f19a896e8 b6c5a531a458a2e790c1fd6421739d1c13926acd94b1501693cc814d6622f16a">a4fddd6c93a03ee3c32e5d3688e4e5e95db79b134e9f6b82c0b36e0489ee08edb90dd5946f0946207856a8a37f441edf b6c5a531a458a2e790c1fd6421739d1c5c394f18677800398f809fda80fa0d42b90dd5946f0946207856a8a37f441edf fd273fcf5bcad3dfdad3c41bd81ad3e5 4012ea8e91cfd061a884cb0b349965bb a34de1251f0d9fe1e645927f19a896e8 b6c5a531a458a2e790c1fd6421739d1c b90dd5946f0946207856a8a37f441edf b6c5a531a458a2e790c1fd6421739d1c00afaccdcb0dfe0c668b03ba07df5290添加新闻5db79b134e9f6b82c0b36e0489ee08edb90dd5946f0946207856a8a37f441edf fd273fcf5bcad3dfdad3c41bd81ad3e5 f16b1740fad44fb09bfe928bcc527e08 36cc49f0c466276486e50c850b7e4956 73a6ac4ed44ffec12cee46588e518a5e
1e9b643e7f32466fe3a3ea4857be9001
function gen_static_file($program, $filename) { $program 1= "/usr/local/apache/htdocs/php/" . $program; $filename1 = "/usr/local/apache/htdocs/ static_html/" . $filename; $cmd_str = "/usr/local/php4/bin/php " . $program1 . " } " . $filename1 . " "; system($cmd_str); echo $filename . " generated.〈br〉"; }
function gen_college_static () { for ($i = 0; $i 〈= 32; $i++〉 { putenv("province_id=" . $i); //*.php文件从数据库取数据时要用到。 $filename = " college_static". $i . ".html"; gen_static_file("college_static.php", $filename); }从这个函数我们可以看到通过调用函数gen_static_file(), college_static.php经过静态化,变成了33个静态页面college.static0.html~college.static33.html,其中$filename会随着$I的变化而变化。当然也可以从数据库中直接取值,来控制生成的静态页面的个数和名字,其他程序对生成的静态页面的调用应和静态页面的命名规则一致。