• 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*?)[^>]*>.*?|<.*? />
    评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

    匹配首尾空白字符的正则表达式:^/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;
    }
  • posted on 2008-01-15 10:46  Jackie Yao  阅读(344)  评论(0编辑  收藏  举报