PHP与其它跨平台语言(也许Java不在其列. :))类似,也有正规表达式功能. PHP3.0的正规表达式功能当然远远比不上Perl,但还是足够用的,主要函数有这么些:
(1)ereg,eregi
这是正规表达式匹配函数,前者是大小写有关匹配,后者则是无关的.
用法: ereg(正规表达式,字符串,[匹配部分数组名]);
PHP3.0中的正规表达式大体类似于grep中用的.
(2)ereg_replace,eregi_replace
这些是替换函数.
用法:
ereg_replace(正规表达式,替换串,原字符串);
字符串处理函数中有一个strtr,是"翻译"函数,类似于Perl中的tr/.../.../,
用法: strtr(字符串,"从","到");
例如:strtr("aaabb","ab","cd")返回"cccdd".
(3)split
与explode函数有些类似,但这次可以在匹配某正规表达式的地方分割字符串.
用法:
split(正规表达式,字符串,[取出前多少项]);
图象函数
PHP中有一组图像函数,可以动态生成gif格式的图像数据流并输出到服务器. 为了这组函数能够工作,系统中必须有gd库的支持.如果是在Unix下, 应该在编译PHP之前先取得gd的源码并编译之,生成libgd.a和一些.h文件,分别拷到系统的库目录和头文件目录中(例如/usr/lib和/usr/include);如果是在Windows下,PHP3.0的安装程序会安装一个gd.dll文件,在程序中加一句'dl("gd.dll");'即可使用图像函数.
主要的图像函数有:
(1)ImageCreate(宽度,高度)
返回一个图像描述符.
(2)ImageCreateFromGif(文件名);
返回一个图像描述符.
(3)ImageColorAllocate(图像描述符,红,绿,蓝);
返回一个颜色描述符.由于Gif图像只能有256色,必须先对它分配调色板, 这个语句就是分配一个调色板项.
(4)ImageColorTransparent(图像描述符,颜色描述符);
指定某颜色为透明色.
(5)ImageArc(图像描述符,圆心横坐标,圆心纵坐标,椭圆宽,椭圆高,起始角,终止角,颜色描述符);
ImageChar(图像描述符,字体,x,y,字符,颜色描述符);
ImageCharUp(图像描述符,字体,x,y,字符,颜色描述符);
ImageCopyResized(目标图像描述符,源图像描述符,目标x,目标y,源x,源y,目标宽,目标高,源宽,源高);
ImageDashedLine(图像描述符,x1,y1,x2,y2,颜色描述符);
ImageFill(图像描述符,起始点x,起始点y,颜色描述符);
ImageFilledPolygon(图像描述符,各顶点数组,顶点数,颜色描述符);
ImageFilledRectangle(图像描述符,x1,y1,x2,y2,颜色描述符);
ImageFillToBorder(图像描述符,起始点x,起始点y,边界色,填充色);
ImageLine(图像描述符,x1,y1,x2,y2,颜色描述符);
ImagePolygon(图像描述符,各顶点数组,顶点数,颜色描述符);
ImageRectangle(图像描述符,x1,y1,x2,y2,颜色描述符);
ImageSetPixel(图像描述符,x,y,颜色描述符);
ImageString(图像描述符,字体,x,y,字符串,颜色描述符);
ImageStringUp(图像描述符,字体,x,y,字符串,颜色描述符);
这些都是画图函数,需要略做解释的就是多边形的顶点数组内依次存放着第一点x,第一点y,第二点x,第二点y,...
(6)ImageLoadFont(文件名);
文件应该是一个位图字体文件,返回一个字体号.系统缺省带有1-5字体号, 可以直接使用.
看实例学正则表达式
首先,让我们看看两个非凡的字符:’^’ 和 ‘$’ 他们是分别用来匹配字符串的开始和结束,一下分别举例说明:
"^The": 匹配以 "The"开头的字符串;
"of despair$": 匹配以 "of despair" 结尾的字符串;
"^abc$": 匹配以abc开头和以abc结尾的字符串,实际上是只有abc与之匹配;
"notice": 匹配包含notice的字符串;
你可以看见假如你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边。
这里还有几个字符 '*', ' ',和 '?', 他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示:"zero or more", "one or more", and "zero or one." 这里是一些例子:
"ab*": 匹配字符串a和0个或者更多b组成的字符串("a", "ab", "abbb", etc.);
"ab ": 和上面一样,但最少有一个b ("ab", "abbb", etc.);
"ab?":匹配0个或者一个b;
"a?b $": 匹配以一个或者0个a再加上一个以上的b结尾的字符串.
你也可以在大括号里面限制字符出现的个数,比如
"ab{2}": 匹配一个a后面跟两个b(一个也不能少)("abb");
"ab{2,}": 最少更两个b("abb", "abbbb", etc.);
"ab{3,5}": 2-5个b("abbb", "abbbb", or "abbbbb").
你还要注重到你必须总是指定 (i.e, "{0,2}", not "{,2}").同样,你必须注重到, '*', ' ', 和'?' 分别和一下三个范围标注是一样的,"{0,}", "{1,}", 和 "{0,1}"。
现在把一定数量的字符放到小括号里,比如:
"a(bc)*": 匹配 a 后面跟0个或者一个"bc";
"a(bc){1,5}": 一个到5个 "bc."
还有一个字符 '│', 相当于OR 操作:
"hi│hello": 匹配含有"hi" 或者 "hello" 的 字符串;
"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字符串;
"(a│B)*c": 匹配含有这样 - 多个(包括0个)a或b,后面跟一个c的字符串 的字符串;
一个点('.')可以代表所有的 单一字符:
"a.[0-9]": 一个a跟一个字符再跟一个数字的 (含有这样一个字符串的字符串将被匹配,以后省略此括号)
"^.{3}$": 以三个字符结尾.中括号括住的内容只匹配一个 单一的字符
"[ab]": 匹配单个的 a 或者 b ( 和 "a│b" 一样);
"[a-d]": 匹配'a' 到'd'的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样);
"^[a-zA-Z]": 匹配以字母开头的字符串
"[0-9]%": 匹配含有 形如 x% 的字符串
",[a-zA-Z0-9]$": 匹配以逗号在加一个数字或字母结尾的字符串
你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用'^' 作为开头 (i.e., "%[^a-zA-Z]%" 匹配含有 两个百分号里面有一个非字母 的字符串).
为了能够解释,但"^.[$()│* ?{"作为有非凡意义的字符的时候,你必须在这些字符面前加'', 还有在php3中你应该避免在模式的最前面使用, 比如说,正则表达式 "($│?[0-9] " 应该这样调用 ereg("($│?[0-9] ", $str) (不知道php4是不是一样)
不要忘记在中括号里面的字符是这条规路的例外
PHP array_key_exists() 与array_keys() 函数使用方法
PHP array_key_exists() 与array_keys() 函数使用方法与实例教程我们先来看看
array_key_exists()定义和用法
该array_key_exists ( )函数检查一个数组某一特定键,返回true ,如果存在的关键和虚假的关键是不存在。
PHP array_merge_recursive 与array_merge() 函数使用方法
PHP array_merge_recursive 数据合并函数与array_merge() 函数使用方法 以及实例教程
array_merge_recursive 定义和用法
该array_merge_recursive ( )函数合并一矿多阵列成一个阵列。之间的差异这一职能蚂蚁的array_merge ( )函数是当两个或更多的数组元素具有相同的关键。而不是凌驾于按键, array_merge_recursivse ( )函数使得价值的一个数组。 (见例1 )
语法
php array_intersect_ukey()函数使用方法
好了下面我们来看看phparray_intersect_ukey()函数使用方法与实例教程吧.
array_intersect_ukey()定义和用法
该array_intersect_ukey ( )函数比较的钥匙在两个或两个以上的阵列,检查比赛之前,比较的钥匙在一个用户定义的函数,然后返回一个数组的项和值从第一个数组,如果该功能允许它。
语法
array_diff_assoc() 与 array_diff_uassoc()函数教程
array_diff_assoc() 与 array_diff_uassoc()函数教程
定义和用法
该array_diff_assoc ( )函数比较两个或两个以上的阵列,并返回一个数组的项和值从第一阵列,只有当他们不存在任何其他阵列。
PHP array_diff() 与 array_diff_key()函数
我们先来看看PHP array_diff()的语法吧.
定义和用法
该array_diff ( )函数比较两个或两个以上的阵列,并返回一个数组的项和值从第一阵列,只有当该值不是在任何其他阵列。
php htmlspecialchars()函数
由于使用Javascript (通常情况下)客户端的技术,和PHP (通常情况下)服务器端技术,自从HTTP是一种“无国籍”协议,两种语言不能直接共享变量。
然而,人们可能通过变量两者之间的关系。途径之一是完成这一创造Javascript代码用PHP ,并刷新浏览器本身,通过特定变量返回的PHP脚本。下面的例子恰恰说明如何做到这一点-它使P HP代码捕获屏幕的高度和宽度,这通常是唯一可能在客户端。htmlspecialchars()函数
php file_get_contents函数
php file_get_contents函数,
本函数用来读取远程服务器文件的内容,这样大大的方便写采集朋友了,只要很简单的一句就可以把远程服务器的文件保存到自己的数据库,你说简单不,光说不行了我举个例子看看吧.
php 数组的用法
Array ( [0] => Array ( [userid] => 1 [username] => 刘振鹏 [status] => 0 [userpwd] => ) [1] => Array ( [userid] => 2 [username] => 刘鹏飞 [status] => 0 [userpwd] => ) [2] => Array ( [userid] => 3 [username] => 刘朋 [status] => 0 [userpwd] => ) [3] => Array ( [userid] => 4 [username] => admin [status] => 0 [userpwd] => ) [4] => Array ( [userid] => 11 [username] => admin [status] => 0 [userpwd] => ) [5] => Array ( [userid] => 12 [username] => admin [status] => 0 [userpwd] => ) [6] => Array ( [userid] => 13 [username] => liuzp [status] => 0 [userpwd] => ) [7] => Array ( [userid] => 14 [username] => lzp [status] => 0 [userpwd] => ) )
php处理ubb函数
<?php
/*
程序设计: 林建炫(飘枫设计室)
made in 陆丰 by 2007-03-07 中午
QQ: 5818500
Email: linzhenxuan@163.com
如果你使用、修改请保留该信息!
功能: Ubb类
优点: 比普通ubb多了快速Ubb配对相应的html问题。
*/
Class Cls_Ubb
{
var $type='';
Function _htm($string)
{
if(!$string){return "";}
if(ereg("<(.+)*>(.+)*</(.+)*>",$string))
{
$string = eregi_replace("<","<",$string);
$string = eregi_replace(">",">",$string);
}
if(eregi("[(/*b)]",$string)){$this->type.="1,";}
if(eregi("[(/*i)]",$string)){$this->type.="2,";}
if(eregi("[(/*u)]",$string)){$this->type.="3,";}
if(eregi("[align=([a-zA-Z]*)]",$string)){$this->type.="4,";}
if(eregi("[fly](.+)*[/fly]",$string)){$this->type.="5,";}
if(eregi("[move](.+)*[/move]",$string)){$this->type.="6,";}
if(eregi("[light](.+)*[/light]",$string)){$this->type.="7,";}
if(eregi("[SHADOW=([0-9]{1,3}),([a-zA-Z]*),([0-9]{1,})](.+)*[/shadow]",$string)){$this->type.="8,";}
if(eregi("[url=(.+)](.+)[/url]",$string)){$this->type.="9,";}
if(eregi("[email]([a-zA-Z0-9]{1,}@([a-zA-Z0-9]{1,}.[a-zA-Z0-9]{1,})*)[/email]",$string)){$this->type.="10,";}
if(eregi("[em([0-9]{1,})]",$string)){$this->type.="11,";}
if(eregi("[img](.+)*[/img]",$string)){$this->type.="12,";}
if(eregi("[flash=*([0-9]*),*([0-9]*)](.+)*[/flash]",$string)){$this->type.="13,";}
if(eregi("[mp=*([0-9]{1,3}),([0-9]{1,3})](.+)*[/mp]",$string)){$this->type.="14,";}
if(eregi("[rm=([0-9]{1,3}),([0-9]{1,3})](.+)*[/rm]",$string)){$this->type.="15,";}
if(eregi("[sound](.+)*[/sound]",$string)){$this->type.="16,";}
if(eregi("[code](.+)*[/code]",$string)){$this->type.="17,";}
if(eregi("[sup](.+)*[/sup]",$string)){$this->type.="18,";}
if(eregi("[sub](.+)*[/sub]",$string)){$this->type.="19,";}
if(eregi("[color=(.+)*](.+)*[/color]",$string)){$this->type.="20,";}
if(eregi("[size=([0-9]{1})](.+)*[/size]",$string)){$this->type.="21,";}
if($this->type){$this->type=substr($this->type,0,(strlen($this->type)-1));}
return $string;
}
?>