[转帖]建立灵巧结构的PHP程序

Filed under: PHP&MySQL | 1 Comment »
Posted on

好的代码应被分成了多个部分,合适的库及函数调用,清楚的数据库结构,站点的每一个部分与其它部分都是相对独立的。

  但是,这仍不是最好的。如果我可以重做,我将更多的关注于HTML层与数据层的分离,通过对象及清楚的函数库实现这一点。

优美的图形

  我知道经理们喜欢用优美的图形及图表来描述它们,这将给我们留下最好的印象。用这种隐藏在一个结构后的想法,你可以把你的逻辑与外观分离,这意味着任何一个复杂的程序都可以用”API/Data Access Layer”来表述。

  与其你把安全检测、更新的句子等放在HTML层中,不如把它们整体地放在你的API层里。而这个HTML层只含有简单的函数调用和返回的数组、对象或自定的其它什么,以及一些数据库的检索结果的集合等。

  如果你这样做了,顶层将是非常的瘦小,你可以方便地创建及维护它。

  如下的例子中,这个HTML接口中只有一些API层中的函数的直接调用,一些HTML工具库(它能生成一个弹出框等等),和一些从数据库抽象层中调用的数据库操作方法(你不需要绑定某一个特别的数据库)。

Read the rest of this entry »

Tags : ,

如何编写一个shell脚本

Filed under: Other | 2 Comments »
Posted on

本文结合大量实例阐述如何编写一个shell脚本。

  为什么要进行shell编程

  在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。

  下面,让我们一起来看看shell是如何工作的:

  建立一个脚本

  Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在bash的大姐,bourne shell中运行)。
Read the rest of this entry »

MySQL Replace INTO的使用

Filed under: PHP&MySQL | 1 Comment »
Posted on

REPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。请参见13.2.4节,“INSERT语法”。

注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。

所有列的值均取自在REPLACE语句中被指定的值。所有缺失的列被设置为各自的默认值,这和INSERT一样。您不能从当前行中引用值,也不能在新行中使用值。如果您使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。

为了能够使用REPLACE,您必须同时拥有表的INSERT和DELETE权限。

Read the rest of this entry »

[转]利用PHP制作简单的内容采集器

Filed under: Spider | 5 Comments »
Posted on

出处:天极网

  采集器,通常又叫小偷程序,主要是用来抓取别人网页内容的。关于采集器的制作,其实并不难,就是远程打开要采集的网页,然后用正则表达式将需要的内容匹配出来,只要稍微有点正则表达式的基础,都能做出自己的采集器来的。

  前几天做了个小说连载的程序,因为怕更新麻烦,顺带就写了个采集器,采集八路中文网的,功能比较简单,不能自定义规则,不过大概思路都在里面了,自定义规则可以自己来扩展。

  用php来做采集器主要用到两个函数:file_get_contents()和preg_match_all(),前一个是远程读取网页内容的,不过只在php5以上的版本才能用,后一个是正则函数,用来提取需要的内容的。

  下面就一步一步来讲功能实现。
Read the rest of this entry »

[原创]图书网站采集实例教程

Filed under: Spider | 1 Comment »
Posted on

在网上看到很多简单的采集教程,尤其是针对图书网站的比较多,但附带实例的并不多,在看了一篇针对八路中文网的抓取分析后,决定针对这个网站,写一个简单的抓取教程,并附带实例。由于俺偷懒,文中很多分析都是来自《利用PHP制作简单的内容采集器》,俺只是进一步优化了他的流程,并完成了代码实例的编写。
采集程序其实并不难做,只要分析清楚流程,然后使用合适的正则来取到你想要的内容就可以了。废话不说了,教程开始:
1.分析入口:
多打开几本书后,可以发现书名的基本格式是:http://www.86zw.com/Book/书号/Index.aspx。于是得出:

  1. $BookId='1888';
  2. $index="http://www.86zw.com/Book/".$BookId."/Index.aspx";//组合书目首页URL

2.打开页面:

  1. $contents=file_get_contents($index);

3.抓取图书信息页:

  1. //抓取图书相关信息
  2. preg_match_all("/<div id=\"CrBookTitle\"><span class=\"booktitle\">(.*)<\/span><\/div>/is",$contents,$Arraytitle);
  3. preg_match_all("/【<a href=\"(.*)\"><font color=\"#CC0000\">点击阅读<\/font><\/a>】/is",$contents,$Arraylist);
  4. unset($contents);
  5. $title=$Arraytitle[1][0];//书名
  6. $list="http://www.86zw.com".trim($Arraylist[1][0]);//列表页URL

Read the rest of this entry »