可以使用htmlentities函数
php?
$str?=?'a?href=""百度一下/a';
echo?htmlentities($str);
输出结果
a?href=""百度一下/a
第一段: 具备本地调试PHP的功能
第二段: 构思新闻发布系统所具备的功能
第三段: PHP生成HTML的技术原理.
哈哈.费话说了那么多,终于到了该讲的地方了.其实,这一原理并不复杂,综合地来讲的话,应该是PHP中一个替换数据语法的应用.OK,讲一个简单范例吧,一步一步地分析!相信聪明的你能看得明白的咯,仔细看好每一步即可,今天这一节,只是引导大家如何做而已,具体的可以实践一下!
(1)在MYSQL里新建一数据库,命名为 database (可自定义),新建一表,命名为 news(因为是新闻发布嘛,取个好记的名字即可,可自定义),然后建立这几个字段名:?
id (自动递增,这是关键,类型:INT)?
title (顾名思义,新闻标题,类型可取 TEXT)?
content (新闻内容,类型可取 TEXT)?
path (HTML文件路径,类型可取 TEXT)
这是连接数据库的PHP文件,你可以把连接数据的语句单独放在这一文件里,以后多个需要连接数据库的文件直接引用这个文件即可.
示例源代码:
html?body?此新闻的标题:{title}?此新闻的内容:{content}?/body?/html
{ }大括号内的内容即是要被替换的内容,整个静态模板的设计可以根据自己的思路,但{ }内被替换的内容必须包含在内,如上面的{title},{content};咔咔~简单地说,设计好一个很好看的新闻模板后,把要被替换的如{title},{content}等标记放到需要的地方就可以了撒.
OK,整个生成HTML的示例源码就到这里,其关键是用了替换的方法.?
$str=str_replace("{被替换的内容}",$替换的内容,$str);?
所以呢,最后提醒一下大家以上的做法:先设计好新闻模板,把需要被替换的内容用{ }放到模板中相应的位置,然后设计表单,再是最后的表单处理程序,把从表单中获取的变量替换模板中相应的内容即可,这样每次都会生成不同的HTML;如果需要修改HTML的内容也是一样的,获得修改后的表单内容后,先用 update 语句更新数据库,再重新替换一下模板中的内容即可;删除的话,先delete表中要删除的内容,再用unlink($path) 来删除HTML的物理文件即可.
PHP将整个网站生成HTML纯静态网页的方法如下:
代码如下:
php
//在开始处加入 ob_start();
ob_start();
//以下是你的代码
//在结尾加入 ob_end_clean(),并把本页输出到一个变量中
$temp = ob_get_contents();
ob_end_clean();
//写入文件
$fp = fopen('文件名','w');
fwrite($fp,$temp) or die('写文件错误');
这只是最基本的方法,还不是很实用,因为网站是要更新的,要定期重新生成HTML
用下面的方法: 代码如下:
if(file_exists("xxx.html"))
{
$time = time();
//文件修改时间和现在时间相差半小时一下的话,直接导向html文件,否则重新生成html
header("Location:xxx.html");
}
//页面的详细内容
$fp = fopen('xxx.html','w');
//重新导向
下面是一些用到的函数的介绍:
①.、Flush:刷新缓冲区的内容,输出.
函数格式:flush()
说明:这个函数经常使用,效率很高.
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区.为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容.
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE .
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活.则返回 FALSE.
使用方法:void ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话).
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!
使用方法:void ob_implicit_flush ([int flag])
说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush().
php中htmlspecialchars函数能把、转义成可以在html页面直接显示的形式( ),
比如
$str='a href="a.html"aaa/a';
echo htmlspecialchars($str);就是直接显示代码了.
更详细的用法去查阅htmlspecialchars说明,可以选择性地转义引号
①.、输出HTML