php实现内置函数以及排序

来源:互联网 发布:登录无限极网络 编辑:程序博客网 时间:2024/05/29 12:43
<?php// PHP内置字符串函数实现   //字符串长度  function strlen ($str)  {      if ($str == '' ) return 0;       $count =  0;       while (1)     {          if ($str[$count] != NULL)        {                $count++;                continue;          }        else        {             break;                          }       }          return $count;  }//截取子串  function substr($str,$start,$length=NULL)  {          if ($str== '' || $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 == '') 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<strlen($s1 ); $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 <strlen($str); $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<strlen ($str); $c++)    {          $laststr  .= $str[$c];      }    $str = ($startstr . $laststr );      return $str;  } //复制字符串  function strcpy($s1, $s2 )  {      if (strlen($s1)==NULL || !isset( $s2)) return;      for ($i=0 ; $i<strlen($s1);  $i++)    {          $s2[] = $s1 [$i];              }      return $s2;  }//连接字符串  function strcat($s1 , $s2)  {          if (!isset($s1) || !isset( $s2)) return;          $newstr = $s1 ;          for($i=0; $i <count($s); $i ++){                  $newstr .= $st[$i ];          }          return $newsstr;  }//简单编码函数(与php_decode函数对应)  function php_encode($str)  {      if( $str=='' && strlen( $str)>128) return false;      for( $i=0; $i<strlen ($str); $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=='' && strlen($str )>128) return false;    for( $i=0; $i<strlen ($str); $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 = 'abcdefghijklmnopqrstuvwxyz1234567890';      $decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359';      if (strlen($str) == 0) return  false;    for ($i=0;  $i<strlen($str); $i ++)    {          for ($j=0; $j <strlen($encrypt_key); $j ++)        {             if ($str[$i] == $encrypt_key [$j])           {                  $enstr .=  $decrypt_key[$j];                  break;             }          }      }          return $enstr;  }//简单解密函数(与php_encrypt函数对应)  function php_decrypt($str)  {      $encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890';      $decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359';      if ( strlen($str) == 0) return  false;      for ($i=0;  $i<strlen($str); $i ++)    {          for ($j=0; $j <strlen($decrypt_key); $j ++)        {             if ($str[$i] == $decrypt_key [$j])           {                 $enstr .=  $encrypt_key[$j];                 break;                                     }          }      }   return $enstr;  }//排序//二分查找function Dichotomia($array,$low,$high,$k){       if ( $low <= $high)    {           $mid =  intval(($low+$high)/2 );        if ($array[$mid] ==  $k)        {               return $mid;           }        else if ( $k < $array[$mid])        {               return  Dichotomia($array, $low,  $mid-1, $k);           }        else        {               return  Dichotomia($array, $mid+ 1, $high, $k);           }       }       return -1;   }//顺序查找(数组里查找某个元素) function  OrderFind($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 deleteArrayElement($array,$i)  {          $len =  count($array);        for ($j= $i; $j<$len; $j ++)        {              $array[$j] = $array [$j+1];          }          array_pop ($array);        return $array ;  }//冒泡排序(数组排序) function bubbleSort($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<count($array ); $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);  }   


原创粉丝点击