当前位置: 编程技术>php
本页文章导读:
▪PHP巧获服务器端信息
怎么在PHP方式下得到服务器的有关信息?其实只需三句代码,即可以轻松获取到对端某个文件的相关信息及所属站点信息。代码如下: <?php $fp = fopen("http://www.***.com/***.htm","r"); .........
▪搜索引擎核心技术(PHP编程思路) --[1]
谈到网页搜索引擎时,大多数人都会想到雅虎。的确,雅虎开创了一个互联网络的搜索时代。然而,雅虎目前用于搜索网页的技术却并非该公司原先自己开发的。2000年8月,雅虎采用了Google.........
▪PHP 脚本:随心所欲的代码逐渐流行
记得 HTML 从1.0 版发展到 2.0 版的那些令人兴奋的日子吗,那时掌握一种新的 Web 语言就和查看 Web 站点之后的代码一样简单?记得轻松的学习基础 HTML 吗?记得能够随意地构建出一些代码,.........
[1]PHP巧获服务器端信息
来源: 互联网 发布时间: 2013-11-30
怎么在PHP方式下得到服务器的有关信息?其实只需三句代码,即可以轻松获取到对端某个文件的相关信息及所属站点信息。代码如下:
<?php
$fp = fopen("http://www.***.com/***.htm","r"); //以只读的方式打开某个站点下的文件
foreach($http_response_header as $info) //对$http_response_header的文件信息头进行遍历循环
echo $info."<br>"; //最后输出各条记录信息
?>
在信息头中,显示的内容包括了该文件是否存在,文件的容量大小、文件类型、编码方式等等,甚至还能获取到该站点所使用的服务器名称、版本号。如果是打开ASP或PHP之类的文件,其中还包含了一些额外信息。
[2]搜索引擎核心技术(PHP编程思路) --[1]
来源: 互联网 发布时间: 2013-11-30
谈到网页搜索引擎时,大多数人都会想到雅虎。的确,雅虎开创了一个互联网络的搜索时代。然而,雅虎目前用于搜索网页的技术却并非该公司原先自己开发的。2000年8月,雅虎采用了Google(www.google.com)这家由斯坦福大学学生创建的风险公司的技术。理由非常简单,Google的搜索引擎比雅虎先前使用的技术能更快、更准确搜索到所需要的信息。
让我们自己来设计、开发一个强劲、高效的搜索引擎和数据库恐怕短时间内在技术、资金等方面是不可能的,不过,既然雅虎都在使用别人的技术,那么我们是不是也可以使用别人现成的搜索引擎网站呢?
剖析编程思路
我们可以这样设想:模拟一个查询,向某个搜索引擎网站发出相应格式的搜索命令,然后传回搜索结果,对结果的HTML代码进行分析,剥离多余的字符和代码,最后按所需要的格式显示在我们自己的网站页面里。
这样,问题的关键就在于,我们要选定一个搜索信息准确(这样我们的搜索才会更有意义啊)、速度快(因为我们分析搜索结果并显示需要额外的时间),搜索结果简洁(便于进行HTML源代码分析和剥离)的搜索网站,由于新一代搜索引擎Google的各种优良特性,这里我们选择它为例,来看看用PHP怎样实现后台对Google(www.google.com)搜索、前台个性化显示这一过程。
我们先来看看Google的查询命令的构成。进入www.google.com网站,在查询栏中输入“abcd”,点击查询按钮,我们可以发现浏览器的地址栏变成:"http://www.google.com/search?q=abcd&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=",可见,Google是通过表单的get方式来传递查询参数并递交查询命令的。我们可以使用PHP中的file()函数来模拟这个查询过程。
了解File()函数
语法: array file(string filename);
返回值为数组,将文件全部读入数组变量中。这里的文件可以是本地的,也可以是远程的,远程文件必须指明所使用的协议。例如: result=file(“http://www.google.com/search?q=a ... mp;hl=zh-CN&lr=”),该语句将模拟我们在Google上查询单词“abcd”的过程,并将搜索结果以每行为元素,传回到数组变量 result中。因为这里读取的文件是远程的,所以协议名“http://”不能缺少。
如果要让用户输入搜索字符进行任意搜索,我们可以做一个输入文本框和提交按钮,并将上文中的被搜索字符“abcd”用变量替换:
<?php
echo '<form>'; //没有参数的form,默认提交方式为get,提交到本身
echo '<input type="text" name="keywords">'; //构造一个文本输入框
echo '<input type="submit" value="查询">'; //构造一个提交查询按钮
echo '</form>';
if (isset( keywords)) //提交后PHP会生成变量 kwywords,即要求下面的程序在提交后运行
{
urlencode( keywords); //对用户输入内容进行URL编码
result=file("http://www.google.com/search?q=". keywords."&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=");
//对查询语句进行变量替换,将查询结果保存在数组变量 result中
result_string=join(" ", result); //将数组$result合并成字符串,各数组元素之间用空格粘和
... //进一步处理
}
?>
上面的这段程序已经能按用户输入内容进行查询,并将返回的结果合成一个字符串变量$result_string。请注意要使用urlencode()函数将用户输入内容进行URL编码,才可以正常地对输入的汉字、空格以及其他特殊字符进行查询,这样做也是尽可能逼真地模拟Google的查询命令,保证搜索结果的正确性。
对Google的分析
为了便于理解,现在假设我们所真正需要的东西是:搜索结果的标题。网址和简介等,这是一个简洁而典型的需求。这样,我们所要做的便是:去除Google搜索结果的台头和脚注,包括一个Google的标志、再次搜索的输入框和搜索结果说明等,并且在剩余的搜索结果各项条目中剥离原来的HTML格式标记,替换成我们想要的格式。
要做到这一点,我们必须仔细地分析Google搜索结果的HTML源码,找到其中的规律。不难发现,在Google的搜索结果的正文总是包含在源码的第一个<p>标记和倒数第二个<p>标记之间,并且倒数第二个<p>标记后紧跟table字符,而且这个组合“<p><table”在源码中也仅有一次,利用这个特点,我们可以这样去除Google的台头和脚注。
以下所有程序均依次接续在上文程序的“进一步处理”处。
result_string = strstr( result_string, "<p>"); //取 result_string从第一个<p>开始后的字符串,以去除Google台头
position= strpos( result_string,"<p>table符号的位置
result_string= substr( result_string,0, position);//截取第一个<p>table符号之前的字符串,以去除脚注
应用与实现
OK,现在我们已经得到有用的HTML源码主干了,剩下的问题是如何自主地显示这些内容。我们再分析一下这些搜索结果条目,发现每个条目之间也是很有规律的用
分隔,也就是各成一个段落,按这个特点我们用explode()函数把每个条目切开:
语法:explode(string separator, string string);
返回一个数组,按separator切开后的各个小字串被保存在数组中。
于是:
result_array=explode("<p>", result_string); //用字串"<p>"把结果切开
我们就得到一个数组 result_array,其中每个元素都是一个搜索结果条目。我们所要做的仅仅是研究每个条目及其HTML显示格式代码,然后按要求替换就行了。下面用循环来处理 result_array中的每个条目。
for( i=0; i {
... //处理每个条目
}
对于每个条目,我们也很容易找到一些特点:每个条目都由标题、摘要、简介、类别、网址等组成,每个部分都换行,即包含<br>标记,于是再次分割:(以下处理程序放在上文的循环中)
every_item=explode("<br>", result_array[ i]);
这样我们得到一个数组 every_item,其中 every_item[0]就是标题, every_item[1]和 every_item[2]两行为摘要, every_item[3]和 every_item[4]等等的头部如果包含“<font size=-1 color=#6f6f6f >简介:</font>”、“< font size=-1 color=#6f6f6f>类别:< /font>”字符,则是简介或类别(因为有的结果条目没有该项),如果头部包含“< font color=green>”则肯定就是网址啦,这种对比判断我们常使用正则表达式(略),如果要替换也很方便,比如包含标题的$every_item[0],其本身是有链接的,我们希望修改这个链接属性,让它在新窗口打开链接:
echo eregi_replace(' {
... //处理每个条目中除去第一项(第一项为标题,已经显示)的每一项
... //更多格式修改
}
这样就修改了链接属性,其余很多显示格式的修改、剥离、替换都能用正则替换eregi_replace()来完成。
至此我们已经得到了每个搜索条目的每一项,并能任意修改每项的格式,甚至可以给他套上漂亮的表格。然而一个好的程序应该能适应各种运行环境的,这里也不例外,我们其实还只是讨论了搜索结果的HTML剥离的一种框架方法,真正要做得完美,还要考虑很多内容,比如要显示一共搜索出多少结果,分成多少页等等,甚至还可以刨除与Google相关的那些“类别”、“简介”等代码,让客户根本看不到原始网站。不过这些内容和要求我们都能通过分析HTML进行剥离得到。现在大家完全能自己动手,做个极富个性化的搜索引擎啦。
让我们自己来设计、开发一个强劲、高效的搜索引擎和数据库恐怕短时间内在技术、资金等方面是不可能的,不过,既然雅虎都在使用别人的技术,那么我们是不是也可以使用别人现成的搜索引擎网站呢?
剖析编程思路
我们可以这样设想:模拟一个查询,向某个搜索引擎网站发出相应格式的搜索命令,然后传回搜索结果,对结果的HTML代码进行分析,剥离多余的字符和代码,最后按所需要的格式显示在我们自己的网站页面里。
这样,问题的关键就在于,我们要选定一个搜索信息准确(这样我们的搜索才会更有意义啊)、速度快(因为我们分析搜索结果并显示需要额外的时间),搜索结果简洁(便于进行HTML源代码分析和剥离)的搜索网站,由于新一代搜索引擎Google的各种优良特性,这里我们选择它为例,来看看用PHP怎样实现后台对Google(www.google.com)搜索、前台个性化显示这一过程。
我们先来看看Google的查询命令的构成。进入www.google.com网站,在查询栏中输入“abcd”,点击查询按钮,我们可以发现浏览器的地址栏变成:"http://www.google.com/search?q=abcd&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=",可见,Google是通过表单的get方式来传递查询参数并递交查询命令的。我们可以使用PHP中的file()函数来模拟这个查询过程。
了解File()函数
语法: array file(string filename);
返回值为数组,将文件全部读入数组变量中。这里的文件可以是本地的,也可以是远程的,远程文件必须指明所使用的协议。例如: result=file(“http://www.google.com/search?q=a ... mp;hl=zh-CN&lr=”),该语句将模拟我们在Google上查询单词“abcd”的过程,并将搜索结果以每行为元素,传回到数组变量 result中。因为这里读取的文件是远程的,所以协议名“http://”不能缺少。
如果要让用户输入搜索字符进行任意搜索,我们可以做一个输入文本框和提交按钮,并将上文中的被搜索字符“abcd”用变量替换:
<?php
echo '<form>'; //没有参数的form,默认提交方式为get,提交到本身
echo '<input type="text" name="keywords">'; //构造一个文本输入框
echo '<input type="submit" value="查询">'; //构造一个提交查询按钮
echo '</form>';
if (isset( keywords)) //提交后PHP会生成变量 kwywords,即要求下面的程序在提交后运行
{
urlencode( keywords); //对用户输入内容进行URL编码
result=file("http://www.google.com/search?q=". keywords."&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=");
//对查询语句进行变量替换,将查询结果保存在数组变量 result中
result_string=join(" ", result); //将数组$result合并成字符串,各数组元素之间用空格粘和
... //进一步处理
}
?>
上面的这段程序已经能按用户输入内容进行查询,并将返回的结果合成一个字符串变量$result_string。请注意要使用urlencode()函数将用户输入内容进行URL编码,才可以正常地对输入的汉字、空格以及其他特殊字符进行查询,这样做也是尽可能逼真地模拟Google的查询命令,保证搜索结果的正确性。
对Google的分析
为了便于理解,现在假设我们所真正需要的东西是:搜索结果的标题。网址和简介等,这是一个简洁而典型的需求。这样,我们所要做的便是:去除Google搜索结果的台头和脚注,包括一个Google的标志、再次搜索的输入框和搜索结果说明等,并且在剩余的搜索结果各项条目中剥离原来的HTML格式标记,替换成我们想要的格式。
要做到这一点,我们必须仔细地分析Google搜索结果的HTML源码,找到其中的规律。不难发现,在Google的搜索结果的正文总是包含在源码的第一个<p>标记和倒数第二个<p>标记之间,并且倒数第二个<p>标记后紧跟table字符,而且这个组合“<p><table”在源码中也仅有一次,利用这个特点,我们可以这样去除Google的台头和脚注。
以下所有程序均依次接续在上文程序的“进一步处理”处。
result_string = strstr( result_string, "<p>"); //取 result_string从第一个<p>开始后的字符串,以去除Google台头
position= strpos( result_string,"<p>table符号的位置
result_string= substr( result_string,0, position);//截取第一个<p>table符号之前的字符串,以去除脚注
应用与实现
OK,现在我们已经得到有用的HTML源码主干了,剩下的问题是如何自主地显示这些内容。我们再分析一下这些搜索结果条目,发现每个条目之间也是很有规律的用
分隔,也就是各成一个段落,按这个特点我们用explode()函数把每个条目切开:
语法:explode(string separator, string string);
返回一个数组,按separator切开后的各个小字串被保存在数组中。
于是:
result_array=explode("<p>", result_string); //用字串"<p>"把结果切开
我们就得到一个数组 result_array,其中每个元素都是一个搜索结果条目。我们所要做的仅仅是研究每个条目及其HTML显示格式代码,然后按要求替换就行了。下面用循环来处理 result_array中的每个条目。
for( i=0; i {
... //处理每个条目
}
对于每个条目,我们也很容易找到一些特点:每个条目都由标题、摘要、简介、类别、网址等组成,每个部分都换行,即包含<br>标记,于是再次分割:(以下处理程序放在上文的循环中)
every_item=explode("<br>", result_array[ i]);
这样我们得到一个数组 every_item,其中 every_item[0]就是标题, every_item[1]和 every_item[2]两行为摘要, every_item[3]和 every_item[4]等等的头部如果包含“<font size=-1 color=#6f6f6f >简介:</font>”、“< font size=-1 color=#6f6f6f>类别:< /font>”字符,则是简介或类别(因为有的结果条目没有该项),如果头部包含“< font color=green>”则肯定就是网址啦,这种对比判断我们常使用正则表达式(略),如果要替换也很方便,比如包含标题的$every_item[0],其本身是有链接的,我们希望修改这个链接属性,让它在新窗口打开链接:
echo eregi_replace(' {
... //处理每个条目中除去第一项(第一项为标题,已经显示)的每一项
... //更多格式修改
}
这样就修改了链接属性,其余很多显示格式的修改、剥离、替换都能用正则替换eregi_replace()来完成。
至此我们已经得到了每个搜索条目的每一项,并能任意修改每项的格式,甚至可以给他套上漂亮的表格。然而一个好的程序应该能适应各种运行环境的,这里也不例外,我们其实还只是讨论了搜索结果的HTML剥离的一种框架方法,真正要做得完美,还要考虑很多内容,比如要显示一共搜索出多少结果,分成多少页等等,甚至还可以刨除与Google相关的那些“类别”、“简介”等代码,让客户根本看不到原始网站。不过这些内容和要求我们都能通过分析HTML进行剥离得到。现在大家完全能自己动手,做个极富个性化的搜索引擎啦。
[3]PHP 脚本:随心所欲的代码逐渐流行
来源: 互联网 发布时间: 2013-11-30
记得 HTML 从1.0 版发展到 2.0 版的那些令人兴奋的日子吗,那时掌握一种新的 Web 语言就和查看 Web 站点之后的代码一样简单?记得轻松的学习基础 HTML 吗?记得能够随意地构建出一些代码,并在编写时快速地查看外观,而且如果它不能运行,能够容易地修改 HTML 代码吗?没有 IDE,没有对象和类。只需一个文本编辑器、一些标记和您自己的聪明才智。堪称快速和经济高效!
这些日子不会永远消逝。这种“保持简单”的精神在 PHP(近几年来得到广泛应用的一种脚本语言)中继续延续。这种语言在不断发展,并逐渐知道 PHP 能做什么以及不能做什么,并且使 Web 应用程序更加易于构建。
从默默无闻的新生事物到 Web 上的明星角色
就像二十世纪五十年代初涉影坛的好莱坞演员,PHP 真正的开始并不广为人知。有些人认为 PHP 代表“个人主页”。有些人认为 PHP 是其发明者姓名的首字母缩写。实际上,PHP 代表超文本预处理器 (Hypertext Pre Processor),它是由一个名叫 Rasmus Lerdorf 的人在 1994/95 年左右发明的。Lerdorf 提出了 PHP 框架,作为跟踪 Web 站点的访问者如何查看其在线简历的一种方式。他公开发布了最初的超文本预处理器源代码,以帮助其它的 Web 开发人员对在线内容执行类似的操作。
当时 Web 开发人员受到 HTML 中提供的表示特性的打击,开始发现这种新的 PHP 脚本语言在构建动态内容的 Web 站点时有多大的好处。PHP 代码可以直接嵌入到 HTML 代码中,而且这种年轻的脚本语言就像 HTML 一样易于掌握。
对开发人员而言,这意味着可以很快学会 PHP,可以快速构建动态内容的 Web 站点,对代码的修改也可以快速地完成。在开发人员编程时,可以立即查看结果,无需 IDE,也无须困扰于处理用户类型和整数类型以及对象和类 — 它们构成了在更复杂的语言(如 Java)中开发人员需要操心的日常脑力工作。PHP 在各方面保持简单,您不必成为熟练的编程人员就可以开始使用。
由于 PHP 的入门级这一特性,一个开放源代码社区围绕着该语言成长起来,以帮助 PHP 开发变得更加简单。该语言现在支持几种查询协议,有一个强健的传输协议,并提供了许多不同类型的模块库来帮助构建 PHP 应用程序。
所有这些结果表明在最近 3 年里 PHP 的使用得到了爆炸性的增长。回顾 2000 年,根据监控和咨询组 Security Space Web Server 的报告,只有 100,000 个站点在使用 PHP。在 2003 年 8 月,Security Space 报告使用 PHP 的 Web 站点的数量接近 140 万。
在 2003 年 6 月,在参加了 Security Space 调查的 Web 服务器中,超过一半(大约 52%)的服务器运行有某种类型的 PHP。因为 PHP 是开放源代码,因此它无疑对其它的开放源代码 Web 产品(如 Apache Web 服务器,它是完全和 PHP 一起成长起来的)有很大的吸引力。在 Netcraft 最近的领域调查中,Apache 拥有超过三分之二的 Web 服务器市场,而第二位的 Microsoft IIS 拥有大约 24% 的份额。
这些日子不会永远消逝。这种“保持简单”的精神在 PHP(近几年来得到广泛应用的一种脚本语言)中继续延续。这种语言在不断发展,并逐渐知道 PHP 能做什么以及不能做什么,并且使 Web 应用程序更加易于构建。
从默默无闻的新生事物到 Web 上的明星角色
就像二十世纪五十年代初涉影坛的好莱坞演员,PHP 真正的开始并不广为人知。有些人认为 PHP 代表“个人主页”。有些人认为 PHP 是其发明者姓名的首字母缩写。实际上,PHP 代表超文本预处理器 (Hypertext Pre Processor),它是由一个名叫 Rasmus Lerdorf 的人在 1994/95 年左右发明的。Lerdorf 提出了 PHP 框架,作为跟踪 Web 站点的访问者如何查看其在线简历的一种方式。他公开发布了最初的超文本预处理器源代码,以帮助其它的 Web 开发人员对在线内容执行类似的操作。
当时 Web 开发人员受到 HTML 中提供的表示特性的打击,开始发现这种新的 PHP 脚本语言在构建动态内容的 Web 站点时有多大的好处。PHP 代码可以直接嵌入到 HTML 代码中,而且这种年轻的脚本语言就像 HTML 一样易于掌握。
对开发人员而言,这意味着可以很快学会 PHP,可以快速构建动态内容的 Web 站点,对代码的修改也可以快速地完成。在开发人员编程时,可以立即查看结果,无需 IDE,也无须困扰于处理用户类型和整数类型以及对象和类 — 它们构成了在更复杂的语言(如 Java)中开发人员需要操心的日常脑力工作。PHP 在各方面保持简单,您不必成为熟练的编程人员就可以开始使用。
由于 PHP 的入门级这一特性,一个开放源代码社区围绕着该语言成长起来,以帮助 PHP 开发变得更加简单。该语言现在支持几种查询协议,有一个强健的传输协议,并提供了许多不同类型的模块库来帮助构建 PHP 应用程序。
所有这些结果表明在最近 3 年里 PHP 的使用得到了爆炸性的增长。回顾 2000 年,根据监控和咨询组 Security Space Web Server 的报告,只有 100,000 个站点在使用 PHP。在 2003 年 8 月,Security Space 报告使用 PHP 的 Web 站点的数量接近 140 万。
在 2003 年 6 月,在参加了 Security Space 调查的 Web 服务器中,超过一半(大约 52%)的服务器运行有某种类型的 PHP。因为 PHP 是开放源代码,因此它无疑对其它的开放源代码 Web 产品(如 Apache Web 服务器,它是完全和 PHP 一起成长起来的)有很大的吸引力。在 Netcraft 最近的领域调查中,Apache 拥有超过三分之二的 Web 服务器市场,而第二位的 Microsoft IIS 拥有大约 24% 的份额。
最新技术文章: