php 抓取网页生成图片(PHP脚本与动态页面的区别(一)(图))
优采云 发布时间: 2021-09-21 21:07php 抓取网页生成图片(PHP脚本与动态页面的区别(一)(图))
核心提示:PHP脚本是一个服务器端脚本程序,可以通过嵌入等方式与HTML文件混合,也可以以类和函数封装的形式,以模板的形式处理用户请求
让我们首先回顾一些基本概念
一、PHP脚本和动态页面
PHP脚本是一个服务器端脚本程序,可以通过嵌入等方式与HTML文件混合,也可以以类和函数封装的形式以模板的形式处理用户请求。无论如何,它的基本原则是这样的。客户请求页面------>;web服务器引入并指定相应的处理脚本------>;加载到服务器的脚本------>;服务器指定的PHP解析器解析脚本以形成HTML语言表单->;将解析后的HTML语句作为包发送回浏览器。不难看出,在将页面发送到浏览器后,PHP不存在,并且已被转换并解析为HTML语句。客户请求是一个动态文件。事实上,那里不存在真正的文件。它被PHP解析成相应的页面并发送回浏览器。此页面处理方法称为“动态页面”
二、静态页面
静态页面指的是服务器端确实存在的页面,只收录HTML、JS、CSS和其他客户端脚本。它的处理方式是。客户端请求一个页面->;web服务器确认并加载页面------>;web服务器以包的形式将页面传递回浏览器。通过这个过程,我们可以比较动态页面。动态页面需要通过web服务器的PHP解析器进行解析,通常需要连接到数据库进行数据库访问,然后形成HTML语言信息包;静态页面可以直接发送,无需解析或连接数据库,可以大大降低服务器压力,提高服务器负载能力,大大提供页面打开速度和网站整体打开速度。但它的缺点是不能动态处理请求,并且文件必须确实存在于服务器上
三、模板和模板分析
模板是一个未填充内容的HTML文件。例如:
temp.html
代码:
以下是参考片段:
{title}
这是{file}文件“”的模板
PHP处理:
以下是参考片段:
templatest.php
代码:
$title=“HP爱好者测试模板”
$file=“TwoMax内部测试模板
作者:舍一
$fp=fopen(“临时html”、“r”)
$content=fread($fp,filesize(“temp.html”)
$content.=str_uu替换(“{file}”,$file,$content)
$content.=str_uu替换(“{title}”,$title,$content)
echo$内容
模板解析是将PHP脚本解析处理后得到的结果内容填入模板的过程。通常在模板类的帮助下。目前比较流行的模板解析类有phplib、Smarty、fastmarty等。模板解析的原理通常是替换。一些程序员习惯于将判断、循环和其他处理放入模板文件中,并使用解析类进行处理。典型的应用是块的概念,它只是一个循环处理。PHP脚本指定循环数和循环方式,然后模板解析类实现这些操作
那么,在比较了静态页面和动态页面的优缺点之后,让我们来谈谈如何使用PHP生成静态文件
在PHP中生成静态页面并不意味着PHP动态解析和输出HTML页面,而是意味着PHP创建HTML页面。同时,由于HTML的不可写性,如果我们创建的HTML被修改,它需要被删除并重新生成。(当然,您也可以选择使用常规进行修改,但就我个人而言,我认为最好删除并重新生成,这是不值得的。)
回到正题上来。使用过PHP文件操作函数的PHP爱好者知道PHP中有一个文件操作函数fopen,即打开文件。如果文件不存在,请尝试创建它。这是PHP可以用来创建HTML文件的理论基础。只要用于存储HTML文件的文件夹具有写入权限(即权限定义)0777),您可以创建一个文件。(对于UNIX系统,不需要考虑win system。)仍以上述示例为例,如果我们修改最后一句并指定在测试目录中生成名为test.html的静态文件:
代码:
以下是参考片段:
$title=“拓迈国际测试模板”
$file=“TwoMax内部测试模板
作者:_Max“>;Matrix@Two_Max“
$fp=fopen(“临时html”、“r”)
$content=fread($fp,filesize(“temp.html”)
$content.=str_replace(“{file}”,$file,$content)
$content.=str_replace(“{title}”,$title,$content)
//echo$内容
$filename=“test/test.html”
$handle=fopen($filename,“W”);//打开文件指针并创建文件
/*
检查文件是否已创建且可写
*/
如果(!可写($filename)){
Die(“文件:“.$filename.”不可写,请检查其属性并重试!”)
}
如果(!Fwrite($handle,$content)){//将信息写入文件
Die(“未能生成文件“.Filename!”)
}
Fclose($handle);//闭合指针
模具(“创建文件”.Filename.“成功!”)
实际应用中常见的问题及解决方法包括:
一、文章列出问题:
在数据库中创建一个字段,记录文件名,并在每次生成文件时将自动生成的文件名存储在数据库中。对于推荐的文章,只需指向存储静态文件的指定文件夹中的页面。使用PHP操作处理文章列表,将其另存为字符串,并在生成页面时替换该字符串。例如,将文章list的表放在网格标记为{articletable}的页面和PHP处理文件中:
代码:
以下是参考片段:
$title=“拓迈国际测试模板”
$file=“TwoMax内部测试模板
作者:_Max“>;Matrix@Two_Max“
$fp=fopen(“临时html”、“r”)
$content=fread($fp,filesize(“temp.html”)
$content.=str_replace(“{file}”,$file,$content)
$content.=str_replace(“{title}”,$title,$content)
//生成列表开始
$list=”
$sql=“从文章中选择id、标题、文件名”
$query=mysql\u查询($sql)
while($result=mysql\u fetch\u数组($query)){
$列表=''结果[''标题''''''''''
''
}
$content.=str_replace(“{articletable}”,$list,$content)
//生成结束列表
//echo$内容
$filename=“test/test.html”
$handle=fopen($filename,“W”);//打开文件指针并创建文件
/*
检查文件是否已创建且可写
*/
如果(!可写($filename)){
Die(“文件:“.$filename.”不可写,请检查其属性并重试!”)
}
如果(!Fwrite($handle,$content)){//将信息写入文件
Die(“未能生成文件“.Filename!”)
}
Fclose($handle);//闭合指针
模具(“创建文件”.Filename.“成功!”)
二、分页问题
例如,当我们指定分页时,每页上有20篇文章。数据库查询文章a子频道列表中的45篇文章,首先通过查询得到以下参数:1、总页数;2、每页文章数。步骤2,对于($I=0;$I)
代码:
以下是参考片段:
$fp=fopen(“临时html”、“r”)
$content=fread($fp,filesize(“temp.html”)
$onepage='''20''
$sql=“从文章中选择id,其中通道=“”“$channelid”“”
$query=mysql\u查询($sql)
$num=mysql\u num\u行($query)
$allpages=ceil($num/$onepage)
对于($i=0;$i)
一般的想法是这样的,例如,其他数据生成、数据输入和输出检查、分页内容指向等可以根据需要添加到页面中
在实际的文章系统处理过程中,仍然有很多问题需要考虑,与动态页面有很多不同,但总体思路是一致的,其他方面可以从一个例子中得出