正则表达式大全.

2007-01-13

php 正则表达式

* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 z 以及 zoo。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,&aposzo+&apos 能匹配 zo 以及 zoo,但不能匹配 z。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,do(es)? 可以匹配 do 或 does 中的do 。? 等价于 {0,1}。
{n}n 是一个非负整数。匹配确定的 n 次。例如,&aposo{2}&apos 不能匹配 Bob 中的 &aposo&apos,但是能匹配 food 中的两个 o。
{n,} n 是一个非负整数。至少匹配 n 次。例如,&aposo{2,}&apos 不能匹配 Bob 中的 &aposo&apos,但能匹配 foooood 中的所有 o。&aposo{1,}&apos 等价于 &aposo+&apos。&aposo{0,}&apos 则等价于 &aposo*&apos。
{n,m} mn 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,o{1,3} 将匹配 fooooood 中的前三个 o。&aposo{0,1}&apos 等价于 &aposo?&apos。请注意在逗号和两个数之间不能有空格。

2007-01-13

PHP笔记

ceil() 返回数的上限,如4.3 返回5,-4.3 返回-4

2007-01-12

常用的字符簇

【a-z】匹配所有的小写字母
【A-Z】匹配所有的大写字母
【a-zA-Z】匹配所有的字母
【0-9】匹配所有的数字
【/n/t/r/f】匹配所有的空字符
【^A-Z】匹配所有的非大写字母
【^0-9】匹配所有非数字
^【^0-9】匹配所有 以非数字字符开头的字符串



comconn

2007-01-12

PHP创建图像

在下面的例子中,我们将创建一个PNG格式的图像文件,下面的代码是一个包含所创建的图像的MIME类型的头部:
  <? header (Content-type: image/png);
  使用ImageCreate()创建一个代表空白图像的变量,这个函数要求以像素为单位的图像大小的参数,其格式是ImageCreate(x_size, y_size)。如果要创建一个大小为250×250的图像,就可以使用下面的语句:
  $newImg = ImageCreate(250,250);
  由于图像还是空白的,因此你可能会希望用一些彩色来填充它。你需要首先使用ImageColorAllocate()函数用其RGB值为这种颜色指定一个名字,这一函数的格式为ImageColorAllocate([image], [red], [green],[blue])。如果要定义天蓝色,可以使用如下的语句:
  $skyblue = ImageColorAllocate($newImg,136,193,255);
  接下来,需要使用ImageFill()函数用这种颜色填充这个图像,ImageFill()函数有几个版本,例如ImageFillRectangle()、ImageFillPolygon()等。为简单起见,我们通过如下的格式使用ImageFill()函数:
  ImageFill([image], [start x point], [start y point], [color])
  ImageFill($newImg,0,0,$skyblue);
  最后,在图像建立后释放图像句柄和所占用的内存:
  ImagePNG($newImg);
  ImageDestroy($newImg); ?>
  这样,创建图像的全部代码如下所示:
  <? header (Content-type: image/png);
  $newImg = ImageCreate(250,250);
  $skyblue = ImageColorAllocate($newImg,136,193,255);
  ImageFill($newImg,0,0,$skyblue);
  ImagePNG($newImg);
  ImageDestroy($newImg);
  ?>
  如果把这个脚本文件保存为skyblue.php,并用浏览器访问它,我们会看到一个天蓝色的250×250的PNG格式的图像。
  我们还可以使用图像创建函数对图像进行处理,例如把一个较大图像作成一个小图像:
  假设你有一幅图像,想从中裁剪出一个35×35大小的图像。你所需要作的是创建一个35×35大小的空白图像,创建一个包含原来图像的图像流,然后把一个经过调整大小的原来的图像放到新的空白图像中。
  要完成这一任务的关键函数是ImageCopyResized(),它要求的格式如下所示:ImageCopyResized([newimage handle],[original image handle],[new image X], [new Image Y],[original image X], [original image Y], [new image X], [new image Y],[original image X], [original image Y])。
  <? /*发送一个头部,以便让浏览器知道该文件所包含的内容类型*/
  header(Content-type: image/png);
  /*建立保存新图像高度和宽度的变量*/
  $newWidth = 35;
  $newHeight = 35;
  /*建立给定高度和宽度的新的空白图像*/
  $newImg = ImageCreate($newWidth,$newHeight);
  /*从原来较大的图像中得到数据*/
  $origImg = ImageCreateFromPNG(test.png);
  /*拷贝调整大小后的图像,使用ImageSX()、ImageSY()得到原来的图像在X、Y方面上的大小*/
  ImageCopyResized($newImg,$origImg,0,0,0,0,$newWidth,$newHeight,ImageSX($origImg),ImageSY($origImg));
  /*创建希望得到的图像,释放内存*/
  ImagePNG($newImg);
  ImageDestroy($newImg); ?>
  如果把这一小段脚本保存为resized.php,然后用浏览器对它进行访问,就会看到一个35×35大小的PNG格式的图像。

现将一些常用的表达式收集于此,以备不时之需。

匹配中文字符的正则表达式: [/u4e00-/u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^/x00-/xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:/n/s*/r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(/S*?)[^>]*>.*? 1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^/s*|/s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^/s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:/d{3}-/d{8}|/d{4}-/d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]/d{5}(?!/d)
评注:中国邮政编码为6位数字

匹配身份证:/d{15}|/d{18}
评注:中国的身份证为15位或18位

匹配ip地址:/d+/./d+/./d+/./d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]/d*$    //匹配正整数
^-[1-9]/d*$   //匹配负整数
^-?[1-9]/d*$   //匹配整数
^[1-9]/d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]/d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]/d*/./d*|0/./d*[1-9]/d*$   //匹配正浮点数
^-([1-9]/d*/./d*|0/./d*[1-9]/d*)$  //匹配负浮点数
^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$  //匹配浮点数
^[1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]/d*/./d*|0/./d*[1-9]/d*))|0?/.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^/w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式

from:http://www.itquan.com/user3/3765/archives/2007/13093.html



comconn

2007-01-10

PHP#60;摘#62;

在这个多元化的世界重来都不会只有一种选择。在2006年,不仅RoR一夜走红。就连PHP也跟着火了起来。本来PHP在刚诞生时火了一阵子,但由于PHP的早期版本并不是完全的面向对象的语言,因此,使用PHP开发大型的应用有一些困难。而PHP的两位创造人创办的Zend公司于2004年7月生推出了PHP5.0,这个版本不仅提供了丰富的功能,而且整个语言也变成了完全面向对象的。在随后的两年多时间里,Zend公司不断地为PHP增加新的功能,同时又推出了用于可视化开发的PHP Web开发工具Zend Studio。这使得PHP如鱼得水。本来PHP开发就比较简单,现在又变成了面向对象的语言,又有了可视化的开发工具。这些对PHP有利的条件交织在一起,在PHP后形成了一道美丽的彩虹。而PHP也随着这道彩虹越飞越高。

  而据Zend公司透露,Zend将在2006年将会推出三个版本的PHP,2006年也将是一个“旗杆”年,协作框架,合作伙伴的加盟和语言本身的发展,使PHP使用将突破性的增长,获得更多的用户。根据Netcraft的资料显示,超过2200万的网域使用着PHP;来自SecuritySpace.com调查,PHP是最为流行的Apache Web server安装模式,44%的服务器运行着PHP。同时,PHP的核心人物Andi Gutmans解释了三个版本在2006年共存的合理性,预言PHP将会成为 a first class citizen,并且这个目标已经近在咫尺了。

  PHP在这几年的迅猛发展已经对传统的Web技术,如JSP和ASP.NET构成了威胁。也许在未来的数年中,PHP真的可以成为不可战胜的语言。

 

from:天极网

 

comconn 2007/1/10

/--------------------
// 基本数据结构
//--------------------

//二分查找(数组里查找某个元素)
function bin_sch($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k < $array[$mid]){
return bin_sch($array, $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}


//顺序查找(数组里查找某个元素)
function seq_sch($array, $n, $k){
$array[$n] = $k;
for($i=0; $i<$n; $i++){
if($array[$i]==$k){
break;
}
}
if ($i<$n){
return $i;
}else{
return -1;
}
}

//线性表的删除(数组中实现)
function delete_array_element($array, $i)
{
$len = count($array);
for ($j=$i; $j<$len; $j++){
$array[$j] = $array[$j+1];
}
array_pop($array);
return $array;
}

//冒泡排序(数组排序)
function bubble_sort($array)
{
$count = count($array);
if ($count <= 0) return false;

for($i=0; $i<$count; $i++){
for($j=$count-1; $j>$i; $j--){
if ($array[$j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}

//快速排序(数组排序)
function quicksort($array) {
if (count($array) <= 1) return $array;

$key = $array[0];
$left_arr = array();
$right_arr = array();

for ($i=1; $i if ($array[$i] <= $key)
$left_arr[] = $array[$i];
else
$right_arr[] = $array[$i];
}

$left_arr = quicksort($left_arr);
$right_arr = quicksort($right_arr);

return array_merge($left_arr, array($key), $right_arr);
}



//------------------------
// PHP内置 字符串函数实现
//------------------------

//字符串长度
function strlen($str)
{
if ($str == &apos&apos) return 0;

$count = 0;
while (1){
if ($str[$count] != NULL){
$count++;
continue;
}else{
break;
}
}
return $count;
}

//截取子串
function substr($str, $start, $length=NULL)
{
if ($str==&apos&apos || $start>strlen($str)) return;
if (($length!=NULL) ($start>0) ($length>strlen($str)-$start)) return;
if (($length!=NULL) ($start<0) ($length>strlen($str)+$start)) return;

if ($length == NULL) $length = (strlen($str) - $start);
if ($start < 0){
for ($i=(strlen($str)+$start); $i<(strlen($str)+$start+$length); $i++) {
$substr .= $str[$i];
}
}

if ($length > 0){
for ($i=$start; $i<($start+$length); $i++) {
$substr .= $str[$i];
}
}

if ($length < 0){
for ($i=$start; $i<(strlen($str)+$length); $i++) {
$substr .= $str[$i];
}
}
return $substr;
}


//字符串翻转
function strrev($str)
{
if ($str == &apos&apos) return 0;
for ($i=(strlen($str)-1); $i>=0; $i--){
$rev_str .= $str[$i];
}
return $rev_str;
}


//字符串比较
function strcmp($s1, $s2)
{
if (strlen($s1) < strlen($s2)) return -1;
if (strlen($s1) > strlen($s2)) return 1;

for ($i=0; $i if ($s1[$i] == $s2[$i]){
continue;
}else{
return false;
}
}
return 0;
}


//查找字符串
function strstr($str, $substr)
{
$m = strlen($str);
$n = strlen($substr);
if ($m < $n) return false;

for ($i=0; $i<=($m-$n+1); $i++){
$sub = substr($str, $i, $n);
if (strcmp($sub, $substr) == 0) return $i;
}
return false;
}


//字符串替换
function str_replace($substr, $newsubstr, $str)
{
$m = strlen($str);
$n = strlen($substr);
$x = strlen($newsubstr);
if (strchr($str, $substr) == false) return false;

for ($i=0; $i<=($m-$n+1); $i++){
$i = strchr($str, $substr);
$str = str_delete($str, $i, $n);
$str = str_insert($str, $i, $newstr);
}
return $str;
}



//--------------------
// 自实现函数
//--------------------

//插入一段字符串
function str_insert($str, $i, $substr)
{
for($j=0; $j<$i; $j++){
$startstr .= $str[$j];
}
for ($j=$i; $j $laststr .= $str[$j];
}
$str = ($startstr . $substr . $laststr);
return $str;
}

//删除一段字符串
function str_delete($str, $i, $j)
{
for ($c=0; $c<$i; $c++){
$startstr .= $str[$c];
}
for ($c=($i+$j); $c $laststr .= $str[$c];
}
$str = ($startstr . $laststr);

return $str;
}

//复制字符串
function strcpy($s1, $s2)
{
if (strlen($s1)==NULL || !isset($s2)) return;

for ($i=0; $i $s2[] = $s1[$i];
}
return $s2;
}

//连接字符串
function strcat($s1, $s2)
{
if (!isset($s1) || !isset($s2)) return;
$newstr = $s1;
for($i=0; $i $newstr .= $st[$i];
}
return $newsstr;
}


//简单编码函数(与php_decode函数对应)
function php_encode($str)
{
if ($str==&apos&apos strlen($str)>128) return false;

for($i=0; $i $c = ord($str[$i]);
if ($c>31 $c<107) $c += 20;
if ($c>106 $c<127) $c -= 75;
$word = chr($c);
$s .= $word;
}

return $s;
}


//简单解码函数(与php_encode函数对应)
function php_decode($str)
{
if ($str==&apos&apos strlen($str)>128) return false;

for($i=0; $i $c = ord($word);
if ($c>106 $c<127) $c = $c-20;
if ($c>31 $c<107) $c = $c+75;
$word = chr($c);
$s .= $word;
}

return $s;
}


//简单加密函数(与php_decrypt函数对应)
function php_encrypt($str)
{
$encrypt_key = &aposabcdefghijklmnopqrstuvwxyz1234567890'
$decrypt_key = &aposngzqtcobmuhelkpdawxfyivrsj2468021359'

if (strlen($str) == 0) return false;

for ($i=0; $i for ($j=0; $j if ($str[$i] == $encrypt_key[$j]){
$enstr .= $decrypt_key[$j];
break;
}
}
}

return $enstr;
}


//简单解密函数(与php_encrypt函数对应)
function php_decrypt($str)
{
$encrypt_key = &aposabcdefghijklmnopqrstuvwxyz1234567890'
$decrypt_key = &aposngzqtcobmuhelkpdawxfyivrsj2468021359'

if (strlen($str) == 0) return false;

for ($i=0; $i for ($j=0; $j if ($str[$i] == $decrypt_key[$j]){
$enstr .= $encrypt_key[$j];
break;
}
}
}

return $enstr;
}

转载于:https://www.cnblogs.com/dnmidi/archive/2008/01/15/1039371.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值