首页 > php代码

什么是垂直搜索?

垂直搜索是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户。
  垂直搜索引擎和普通的网页搜索引擎的最大区别是对网页信息进行了结构化信息抽取,也就是将网页的非结构化数据抽取成特定的结构化信息数据,好比网页搜索是以网页为最小单位,基于视觉的网页块分析是以网页块为最小单位,而垂直搜索是以结构化数据为最小单位。然后将这些数据存储到数据库,进行进一步的加工处理,如:去重、分类等,最后分词、索引再以搜索的方式满足用户的需求。
  整个过程中,数据由非结构化数据抽取成结构化数据,经过深度加工处理后以非结构化的方式和结构化的方式返回给用户。
  垂直搜索引擎的应用方向很多,比如企业库搜索、供求信息搜索引擎、购物搜索、房产搜索、人才搜索、地图搜索、mp3搜索、图片搜索……几乎各行各业各类信息都可以进一步细化成各类的垂直搜索引擎。
  举个例子来说明会更容易理解,比如购物搜索引擎,整体流程大致如下:抓取网页后,对网页商品信息进行抽取,抽取出商品名称、价格、简介……甚至可以进一步将笔记本简介细分成“品牌、型号、CPU、内存、硬盘、显示屏、……”然后对信息进行清洗、去重、分类、分析比较、数据挖掘,最后通过分词索引提供用户搜索、通过分析挖掘提供市场行情报告。
  

阅读全文

如何使用PHP通过SMTP发送电子邮件

由于PHP没有提供现成的smtp函数,却提供了一个功能不甚灵活的mail()函数,这个函数需要服务器配置上的支持,并且不支持smtp验证,在很多场合无法正常的工作,因此不建议使用。本文的目的在于为新手指明方向,并没有涉及那些高级的内容,一来本身水平有限,二来也担心不能准确的讲述相关的概念,进而对各位造成误导,还请自行深入学习。
  “使用php发送mail”最近已经成为继“register_globals”以后本版第二个新手陷阱,今天特地写这篇文章为新手解惑,希望可以为迷茫的人指明方向。
 
  让我们先从以下这个例子开始说起:
  引用:

阅读全文

PHP学习:include()和require()的区别


include()和require()的区别 这相信是PHP中最基本的问题了,也是很多公司面试时必考的题呵呵。
给大家复习一下:
require() :如果文件不存在,会报出一个fatal error.脚本停止执行
include() : 如果文件不存在,会给出一个 warning,但脚本会继续执行
这里特别要注意的是:
使用include()文件不存在时,脚本继续执行,这种情况只出现在PHP 4.3.5之前,这一点,往往被人忽视。
推荐使用require_once()和include_once(),可以检测文件是否有重复包含。

阅读全文

PHP窜红:革命尚未成功 Java仍需努力

相对于Java由简入繁的演变趋势,PHP忠于简单易学原味的坚持受到广大开发者的欢迎,近年来声势大涨,而简单就是力量,这句话套用于近日PHP异军突起,再适合也不过了。老实说,原本觉得它不会太厉害,看到它最近的成长和茁壮,直攻Java阵营输于经营之处,让人对它刮目相看。
 
  Netscape前CEO Marc Andressen在Zend/PHP大会上预言,简单易学的描述语言PHP将会比Java被更多人用于Web应用的开发上;再引用Cnet台湾报导的数据,全球大约有2200万个网站使用PHP,而且数量还在稳定增加中。
 
  为什么PHP会如此受欢迎呢?我想简单好用是最大原因。如果网站只是提供使用者搜寻资讯的入口,网际网路上有许多现成、免费的、容易拿到,且已经做好的网站软体,如行事历、网站管理、新闻、报名系统、电子报、天气预报等免费的应用模组供下载安装使用,如此好康的事情,何乐而不为?而且只要买一本书,装一装,简单的设定就有讨论区,不用写任何程式,这对没有程式经验的人来说是好的进入点,也符合中小企业低成本建置网站的需求。作为Java人士,PHP的窜起给了我三个启示:
  

阅读全文

PHP程序加速探索之加速工具软件

接着我们要关注一下PHP加速的另一个领域—缓存工具软件。这类软件都是从优化PHP运行环境来提速的,不需要改变任何代码。我们可以大概地将它们称为“执行码优化/缓存工具”,你可以理解为它们用来实现比较底层的优化/缓存。
 
以下列出目前比较常用的此类工具,具体哪种效果最好,请用自己的服务器环境测试:
  (一) APC Alternative PHP Cache
  http://pecl.php.net/package-info.php?package=APC
  APC运行于Linux和FreeBSD,你需要自己编译安装。按照其开发人员的说法,在他们的测试环境下可以提高脚本速度50%-400%。并且APC是个开源项目,已经加入了PHP的PECL库,很值得一试。
  (二) Turck MMCache
  http://turck-mmcache.sourceforge.net/
  Turck MMCache似乎是此类软件中目前最受欢迎的一种,它开放源代码,完全免费。它将PHP代码预编译并缓存起来,同时也对PHP运行环境进行一定优化。按照其官方文档的说法,MMCache可以明显地减轻服务器的负载,并提高脚本执行速度1-10倍。
  MMCache与另一个知名的加速软件Zend Optimizer兼容,但注意必需先安装MMCache(php.ini中设置)。除了加快PHP程序的速度,MMCache还可以将PHP代码加密。
  Turck MMCache同时支持Linux和Win32平台。
  (三) PHPA the PHP Accelerator
  http://www.php-accelerator
  PHPA又是另一个流行的PHP加速软件。在其官方网站上有分别使用PHPA与APC、Zend Cache的PHP脚本执行测试对比,其表现略优于APC,略逊于Zend Cache。
  PHPA支持Linux, FreeBSD, OpenBSD, BSDi和Solaris系统.
  (四) Zend Performance Suite
  http://www.zend.com/
  Zend Performance Suite是老牌的PHP加速/优化软件,依托于PHP领域最知名的Zend公司。目前已经推出4.0版本,它可以为PHP应用提供程序加速,内容缓存,文件压缩,下载服务等,功能十分强大,获得好几个PHP杂志的推荐奖—但是不得不提起,它也很昂贵,目前的价格是1875美元。
  以上几种加速软件,希望读者按照服务器环境自行测试并选择其中最适用的,因为我没有办法提供一个普遍适用的测试标准来判断哪种方案是最有效的。综合起来看,我个人认为Turck MMCache是个值得推荐的选择,免费而且功能相当出色。

阅读全文

Windows下Perl开发环境的安装与配置

Perl是一种深受世界各地开发者喜爱的实用摘要和报表语言,虽然它是在Unix上诞生和发展起来的,但在Windows编程领域也已经占有一席之地。
 
在ActiveState等公司的领导之下,从1995年中期开始Perl开始了稳定地发展,不仅增加了标准的Perl功能,而且增加了许多面向Windows的功能,比如OLE和COM集成等。
 
事实上,到目前为止所有Perl程序员都已经能够确信,自己为UNIX服务器写的Perl应用移植到Windows服务器后同样能够流畅、稳定地运行,即使是fork实现这类长期以来最令人头疼的移植问题也已经得到解决。
 
而且我们有理由相信,Perl/Windows集成还将进一步发展。自Windows版Perl开发初期开始Microsoft已经成为它的主要资助者,这一事实足以证实Microsoft所承诺的对Perl的支持。按照最近Microsoft和ActiveState所签署的为期三年的投资协议,Perl无疑将成为未来Windows发展的一部分。
 
如果你正在寻找有关Windows版Perl的更多信息,你可以从网络上找到许多优秀的网站,其中包括:



阅读全文

用php把现有动态新闻页面改成静态页的方案

请问,当我浏览某个网页时,我想在服务器的某个路径下生成对应的静态网页,以方便调用,该怎么处理比较好?
我的程序以前写的,没有这个功能.因此我想有没有比较好的在不大量改动到原程序的情况下实现该功能.

回复人:arcow(冲星) ( 五级(中级)) 信誉:100 2006-2-28 18:02:45
比如你的动态显示页面为
display.php?id=1
的话
你可以在diplay里判断一下是否在对应目录存在对应id的文件名(这里假设文件为id号 html即1.html,2.html,...)
你判断 $id."html"这个文件是否存在于服务器,如果存在就直接跳转到这个页面,要是不存在的话就创建(建义用一个函数来创建,这样对页面改动不大,比如createHTML($_GET['id']),至于这个函数怎么写,我想你应该知道)然后再跳转
-------------------------------------------------
回复人:ice_berg16(寻梦的稻草人) ( 三星(高级)) 信誉:125 2006-2-28 21:33:13
假设你显示文章的页面为
showNews.php?id=34
那么可以这么做
ob_start();
//你的正常程序代码
$html=ob_get_contents();
ob_end_clean();
$fp=fopen($_GET['id'].".htm", "w");
fwrite($fp, $html);
fclose($fp);

阅读全文

PHP-Nuke存在远程SQL注入漏洞 后台数据库堪忧

描述:
  PHP-Nuke是一个广为流行的网站创建和管理工具,它可以使用很多数据库软件作为后端,比如MySQL、PostgreSQL、mSQL、Interbase、Sybase等。
 
  PHP-Nuke的Your_Account模块实现上存在输入验证漏洞,远程攻击者可能利用此漏洞对服务器程序执行SQL注入攻击。
 
  PHP-Nuke的Your_Account模块没有对username参数做充分的过滤检查,远程攻击者可能在此参数中插入恶意的SQL命令,从而非授权获取对后台数据库的操作。
 
  受影响系统:
  PHP-Nuke PHP-Nuke 7.8
  不受影响系统:
  PHP-Nuke PHP-Nuke 7.9 patch 3.1
  补丁下载:
  目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
  http://phpnuke.org/

阅读全文

几个比较有用的正则表达式

匹配中文字符的正则表达式: [u4e00-u9fa5]匹配双字节字符(包括汉字在内):[^x00-xff]应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}匹配空行的正则表达式: [s| ]*匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/匹配首尾空格的正则表达式:(^s*)|(s*$)验证jpg和GIF图片:^.{1,}.((j|J)(p|P)(g|...
阅读全文

PHP 挑战 J2EE 和 .NET

>>摘自对Zend 的marketing VP Pamela Roussos的访问
继PHP获得“Programming Language of 2004”大奖之后,由Zend公司主导的PHP,开始向J2EE和.NET发起挑战,抢夺WEB企业应用开发市场。
根据 Forrester公司的调研,预计到2006市场上将会 有22%的企业应用使用J2EE开发,13%使.NET,56%为二者结合,还有9%使用其它语言和平台。Zend公司的目标正是这9%(甚至更多,因为Zend认为J2EE过于复杂,而使用PHP来高效率地开发出高速的应用是不难的 。Zend公司已经推出了Zend Platform 1.1, 目的正是在于提高PHP的企业级应用竞争力。这是一个完整的解决方案,甚至为PHP和Java的结合提供了一个PHP/Java Integration Bridge ,使用两者可以方便地结合。它将被集中到Zend Studio中。Zend Platform支持 Linux, Sparc Solaris, FreeBSD 4.x/5.x 和 Mac OS X. ,其单CPU服务器版本价格为999美元,双CPU服务器版本价格为1495美元。
 
除了推出Zend Platform外,Zend公司正在加紧推出Zend Studio4.0,大约在情人节(05.02.14)可以推出Beta版本。
 ZendStudio提供了MySQL, PostgreSQL, SQLite, Oracle, SQL Server, DB2 和 Cloudscape 数据库集成和支持。
顺便提一下Zend公司,这个在以色列成立五年的公司已经拥有8000多个客户(如ufthansa, Lockheed Martin, Disney Online, Dresdner Bank, Orange and ADP)。2003年其总部迁往美国加利福尼亚州,并开始在德国和日本开设办事处。

阅读全文

安装并使用phpMyAdmin管理MySQL数据库

学会使用基于Web数据库的管理工具phpMyAdmin。
  如果使用合适的工具,MySQL数据库的管理就会为得相当简单。应用MySQL命令行方式需要对MySQL知识非常熟悉,对SQL语言也是同样的道理。不仅如此,如果数据库的访问量很大,列表中数据的读取就会相当困难。
  当前出现很多GUI MySQL客户程序,其中最为出色的是基于Web的phpMyAdmin工具。这是一种MySQL数据库前台的基于PHP的工具。PhpMyAdmin的缺点是必须安装在你的Web服务器中,所以如果没有合适的访问权限,其它用户有可能损害到你的SQL数据。
  功受奖者PhpMyAdmin的安装过程非常简单。从http://www.phpmyadmin.net/下载PhpMyAdmin,当前最新版本是2.6.4-pl3。将下载文件解压缩到你选择的路径,比如 /srv/www/domain.com/html/admin。在将phpMyAdmin与数据库连接之前,请确保phpMyAdmin处于受保护状态,其中可以通过建立一个an .htaccess文件来完成:
<code>
AuthUserFile /srv/www/domain.com/.htpasswd
AuthGroupFile /dev/null
AuthName adminAuthType basic
<Files *>
Order Deny,Allow
Deny From All
Allow From localhost
require user admin
satisfy any
</Files>
</code>
  以上代码段使得假设路径/srv/www/domain.com没有受保护因此.htaccess文件处于Web路径之外(比如Apache中的 DocumentRoot为/srv/www/domain.com/html)。使用htpasswd工具建立 /srv/www/domain.com/.htpasswd文件:Create the /srv/www/domain.com/.htpasswd file using the htpasswd tool:
<code>
# htpasswd -cm /srv/www/domain.com/.htpasswd admin
</code>
  一旦你已经提供了管理员的密码,可以编辑包含phpMyAdmin 的config.inc.php文件。你将可以编辑$cfg['PmabsoluteUri']关键字以指向安装在服务器中phpMyAdmin的位置,然后编辑$cfg['Servers']数组。为了快速建立和运行,并且能够编辑服务器上所有的数据库,你将需要提供的权限证明:
<code>
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';$cfg['Servers'][$i]['password'] = 'mysecretrootpass';
</code>
  现在你可以进入http://www.domain.com/admin/phpMyAdmin-2.6.4-pl3/并访问你的MySQL数据,并可将路径重命名为phpMyAdmin/以更为方便的访问。

阅读全文