PHP算法

本文详细介绍了PHP中遍历数组、查找特定元素、排序、查找最大连续和等常用算法,包括二分查找、冒泡排序、快速排序、选择排序、插入排序等。同时,文章还展示了如何实现字符串翻转、计算文件相对路径、判断字符串包含、遍历文件夹、计算阶乘、求和等实用功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

PHP 通过一个节点找出所有父节点

<?php
    //测试数据
    $arr = [
        ['id'=>8,'pid'=>7,'username'=>'test3'],
        ['id'=>7,'pid'=>6,'username'=>'test3'],
        ['id'=>6,'pid'=>2,'username'=>'test3'],
        ['id'=>5,'pid'=>2,'username'=>'test3'],
        ['id'=>4,'pid'=>1,'username'=>'test3'],
        ['id'=>3,'pid'=>1,'username'=>'test2'],
        ['id'=>2,'pid'=>1,'username'=>'test1'],
        ['id'=>1,'pid'=>0,'username'=>'admin'],
    ];
 
    //想不到好办法了,用了超全局变量    
    $GLOBALS['ids']  = [];
    getData($arr,1);
 
    function getData($arr,$id)
    {
        //如果为0表示,没有父级了
          if($id == 0 ) return 0;
     
        foreach($arr as $k =>$v) {
            if($v['id'] == $id) {
                if($v['pid'] != 0 ) $GLOBALS['ids'][] = $v['pid'];
                getData($arr,$v['pid']);
            }
        }
        
    }

1

2

3

4

5

6

7

$array array(1, 1, 1, 54, 3,4, 3,4, 3, 14, 3,4, 3,7,8,9,12,45,66,5,7,8,9,2,45);

$array array_count_values($array);  // 统计数组中所有值出现的次数

arsort($array); // 按照键值对关联数组进行降序排序

$first = reset($array);

$first_key = key($array);

 

echo("数组中数字{$first_key}重复次数最多,为:{$first}次");

PHP 计算两个特别大的整数实例代码function getIntAdd($a,$b){
$c = '';
$bCount = strlen($b);
$aCount = strlen($a);
$count = max($bCount,$aCount);
$aDiff = $count - $aCount;
$bDiff = $count - $bCount;
for($i = $count - 1;$i >= 0;$i--){
$aVal = $count - $i <= $aCount ? intval($a[$i - $aDiff]) : 0;
$bVal = $count - $i <= $bCount ? intval($b[$i - $bDiff]) : 0;
$v = $aVal + $bVal;
if(strlen($c) > 0 && strlen($c) >= $count - $i){
$c = ($v + intval($c[0])).substr($c,1,strlen($c) - 1);
}else{
$c = $v.$c.'';
}
}
return $c;
}
$a = '23490234328490289048902384908392849238';
$b = '234320498324982390489328498230984982399290384902384';
$c = getIntAdd($a,$b);
print_r($c);

队列是一种线性表,按照先进先出的原则进行
单向队列:只能从头进,从尾出
双向队列:头尾都可以进出
<?php
class Deque{
    private $queue=array();
    
    function addFirst($item){//头入队
        return array_unshift($this->queue,$item);
    }
    function addLast($item){//尾入队
        return array_push($this->queue,$item);
    }
    function removeFirst(){//头出队
        return array_shift($this->queue);
    }
    function removeLast(){//尾出队
        return array_pop($this->queue);
    }
    function show(){//显示
        echo implode(" ",$this->queue);
    }
    function clear(){//清空
        unset($this->queue);
    }
    function getFirst(){
        return array_shift($this->queue);
    }
    function getLast(){
        return array_pop($this->queue);
    }
    function getLength(){
        return count($this->queue);
    }
}
$q=new Deque();
$q->addFirst(1);
$q->addLast(5);
$q->removeFirst();
$q->removeLast();
$q->addFirst(2);
$q->addLast(4);
$q->show();// <span style="font-family: Simsun;font-size:14px;">2 4</span>


1. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
<?php
$num=0;
for($i=1;$i<=4;$i++){
    for($j=1;$j<=4;$j++){
        for($k=1;$k<=4;$k++){
            if($i!=j && $j!=$k && $i!=$k){
                $num =$num +1;
            }
        }
    }
}
echo $num;
?>

PHP实现统计所有字符在字符串中出现次数的方法

<?php

//统计字符串中出现的字符,出现次数
echo '<pre>';
$str = 'aaabbccqqwweedfghhjffffffffggggggggg';//字符串示例
echo $str.'<br/>';
$strRecord=array();//把出现过的字符记录在此数组中,如果记录有,则不记录,
for($i=0;$i<strlen($str);$i++){
 $found = 0;//默认设置为没有遇到过
 foreach((array)$strRecord as $k=>$v){
  if($str[$i] == $v['key']){
   $strRecord[$k]['count'] += 1;//已经遇到,count + 1;
   $found = 1;//设置已经遇到过的,标记
   continue;//如果已经遇到,不用再循环记录数组了,继续下一个字符串比较
  }
 }
 if(!$found){
  $strRecord[] = array('key'=>$str[$i],'count'=>1);//记录没有遇到过的字符串
 }
}
print_r($strRecord);

?>

php求一个字符串在另一个字符串中出现的次数

function check($str1,$str2){
        $len1 = strlen($str1);
        //echo $len1;
        $len2 = strlen($str2);
        $k = 0;
        $j = 0;
        $count = 0;
         for ($i=0; $i < $len2 ; $i++) {
             if ($str2{$i} == $str1{$j} && $j < $len1 ) {
                 $k ++;
                 $j ++;
             if($k == $len1){
                 $count ++;
                 $k = 0;
                 $j = 0;
              }
             }
             else{
                 $k = 0;
                 $j = 0;
             }
        }
        echo $count;
     }

<?  
//--------------------  
// 基本数据结构算法 
//--------------------  
//二分查找(数组里查找某个元素)  
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;   
}   

/***二分查找***/
<?php
     #二分查找
     function binarySearch(Array $arr, $target) {
         $low = 0;
         $high = count($arr) - 1;
         while($low <= $high) {
             $mid = floor(($low + $high) / 2);#找到元素
             if($arr[$mid] == $target) return $mid;#中元素比目标大,查找左部
             if($arr[$mid] > $target) $high = $mid - 1;#重元素比目标小,查找右部
             if($arr[$mid] < $target) $low = $mid + 1;
         }
         return false;  #查找失败
     }
     $arr = array(1, 3, 5, 7, 9, 11);
     $inx = binarySearch($arr, 1);
     var_dump($inx); 
?>

===========================================================================================
===========================================================================================
/***冒泡排序***/
function bubble_sort($arr) {
    $n=count($arr);
    for($i=0;$i<$n-1;$i++){
        for($j=$i+1;$j<$n;$j++) {
            if($arr[$j]<$arr[$i]) {
                $temp=$arr[$i];
                $arr[$i]=$arr[$j];
                $arr[$j]=$temp;
            }
        }
    }
    return $arr;
}

===========================================================================================
===========================================================================================
/***快速排序***/
function quick_sort($arr) {
    $n=count($arr);
    if($n<=1)
        return $arr;
    $key=$arr[0];
    $left_arr=array();
    $right_arr=array();
    for($i=1;$i<$n;$i++) {
        if($arr[$i]<=$key)
            $left_arr[]=$arr[$i];
        else
            $right_arr[]=$arr[$i];
    }
    $left_arr=quick_sort($left_arr);
    $right_arr=quick_sort($right_arr);
    return array_merge($left_arr,array($key),$right_arr);
}
===========================================================================================
===========================================================================================
/***选择排序***/
function select_sort($arr) {
    $n=count($arr);
    for($i=0;$i<$n;$i++) {
        $k=$i;
        for($j=$i+1;$j<$n;$j++) {
           if($arr[$j]<$arr[$k])
               $k=$j;
        }
        if($k!=$i) {
            $temp=$arr[$i];
            $arr[$i]=$arr[$k];
            $arr[$k]=$temp;
        }
    }
    return $arr;
}
===========================================================================================
===========================================================================================
/***插入排序***/
function insertSort($arr) {
    $n=count($arr);
    for($i=1;$i<$n;$i++) {
        $tmp=$arr[$i];
        $j=$i-1;
        while($arr[$j]>$tmp) {
            $arr[$j+1]=$arr[$j];
            $arr[$j]=$tmp;
            $j--;
            if($j<0)
                break;
        }
    }
    return $arr;
}

//顺序查找(数组里查找某个元素)  
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 ;  
}  

===========================================================================================
===========================================================================================
/***PHP翻转中文字符串***/
function reverse($str){
    $r = array();
    for($i=0; $i<mb_strlen($str); $i++){
        $r[] = mb_substr($str, $i, 1, 'UTF-8');
    }
    return implode(array_reverse($r));
}
echo reverse('www.111cn.net天涯PHP博客');

===========================================================================================
===========================================================================================
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
答案1:
   function getExt($url){
   $arr = parse_url($url);
   
   $file = basename($arr['path']);
   $ext = explode(".",$file);
   return $ext[1];
}
===========================================================================================
===========================================================================================
/***PHP计算两个文件的相对路径***/
 
function getrpath($path, $conpath){
    $pathArr = explode('/', $path);
    $conpathArr = explode('/', $conpath);
    $dismatchlen = 0;
    for($i=0; $i<count($pathArr); $i++){
        if($conpathArr[$i] != $pathArr[$i]){
            $dismatchlen = count($pathArr) - $i;
            $arrleft = array_slice($pathArr, $i);//array_slice从数组的第几个元素开始取出,并返回数组中的其余元素:
            break;
        }
    }
    return str_repeat('../', $dismatchlen).implode('/', $arrleft);//str_repeat 把字符串 "../" 重复 几 次:
}
$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/5.php';
echo getrpath($a, $b);
//结果:'../../../c/d/e.php'
===========================================================================================
===========================================================================================
/***php怎样判断一个字符串是否包含另一个字符串?比如 "abcdef" 包含 "cde"***/
<?php
$a='1234567';
$b='123';
$c=explode($b,$a);
if(count($c)>1){
   echo "true";
}
?>
===========================================================================================
===========================================================================================
/***如何实现字符串翻转?***/
<?php
function reverse($var){
  $res="";
  for($i=0,$j=strlen($var);$i<$j;$i++){
    $res=$var[$i].$res;
  } 
  return $res;
}
$tmpvar="wofang";
$res=reverse($tmpvar);
echo $res;
?>
===========================================================================================
===========================================================================================
/***能够遍历一个文件夹下的所有文件和子文件夹***/
function sdir($dir){
    $files = scandir($dir);
    for ($i=0;$i <count($files);$i++){
        if ($files[$i]=='.' or $files[$i]=='..') unset($files[$i]);
        if (is_dir($files[$i])) $files[$i]=sdir($files[$i]);
    }
    return $files;
}
===========================================================================================
===========================================================================================
/***PHP编程在字符串中查找连续出现的最长子字符串***/
 $s='fsafassssssssssssssssssssfdslkfslfjl';
  $max='';
  while($s<>''){
    $i=0;
    while($i<strlen($s) && $s[$i]==$s[0]) $i++;
    if ($i>strlen($max)){
      $max=substr($s,0,$i);
    }
    $s=substr($s,$i);
  }
  echo $max;
===========================================================================================
===========================================================================================
/***php递归函数求阶乘***/
<?php  
 function demo($a)  {  
     if($a > 1)  {  
         $r=$a*demo($a-1);  
     }else  {  
         $r=$a;  
     }  
    return $r;  
 }  
 $a=6;  
 echo $a."的阶乘的值".demo($a);  
?> 
===========================================================================================
===========================================================================================
/***求n的阶乘***/
function factorial($n){
    if($n<=1){
        return 1;
    }
    if($n>1){
        return $n*factorial($n-1);
    }
}
/***求1!+2!+3!+4!+……+n!***/
function sum_factorial($n){
    $sum = 0;
    for($i=1;$i<=$n;$i++){
        $sum+=factorial($i);
    }
    return $sum;
}
echo sum_factorial(10);

用php写出1+2+3+.....n怎么写

<?php
$n = 100; //自定义,一定要设个范围,不然就进入死循环了
$sum = 0;
for($i=1; $i <= $n; $i++){
  $sum = $sum + $i;
  if($i==1){
      echo $i;
  }else{
       echo "+".$i;
   }
}
echo "<br />".$sum;
?>

===========================================================================================
===========================================================================================
/***1杨辉三角 ***/
a
aa
aaa
aaaa
aaaaa
aaaaaa
for ($i=6;$i >= 0;$i--) { 
      for ($j=$i;$j <= 6;$j++) { 
          if ($j <= 6-1) { 
               echo "<b>a</b>"; 
          }else{ 
               echo "<br />"; 
          } 
      } 

===========================================================================================
===========================================================================================
/***2杨辉三角 ***/
bbbb*
bbb***
bb*****
b*******
for($i=0;$i<=3;$i++){
   for($j=0;$j<=3-$i;$j++){
      echo ‘&nbsp;’;
   }
   for($k=0;$k<=2*$i;$k++){
     echo “*”;
   }
    echo ‘<br>’;
}
===========================================================================================
===========================================================================================
/***杨辉三角 ***/

1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1 
$n=10;
for($i=0;$i<$n;$i++){
     for($j=0;$j<=$i;$j++){
          if($j==0||$i==$j){
                $arr[$i][$j]=1;
          }else {
                $arr[$i][$j]=$arr[$i-1][$j]+$arr[$i-1][$j-1];
          }
                echo $arr[$i][$j]."\t";
     }
       echo "<br>";
}
===========================================================================================
===========================================================================================
/***使用for循环打印九九乘法表***/
for($j=1; $j<=9; $j++) {
      for($i=1; $i<=$j; $i++) {
            echo "{$i}x{$j}=".($i*$j)." ";
      }
      echo "<br />";
}
/***九九乘法表***/
1x1=1 
1x2=2 2x2=4 
1x3=3 2x3=6 3x3=9 
1x4=4 2x4=8 3x4=12 4x4=16 
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 
<?php
$j = 1;
while($j<=9){
  $i = 1;
  while($i<=$j){
     echo "{$i}x{$j}=".($i*$j)." ";
    $i++;
  }
  echo "<br />";
  $j++;
}
===========================================================================================
===========================================================================================
/***用符号*画一个菱形图案.***/
   * 
  * * 
 * * * 
* * * * 
 * * * 
  * * 
   * 
<?php
for($i=0;$i<4;$i++){
for($j=0;$j<3-$i;$j++){
echo '&nbsp;';
}
for($k=0;$k<$i+1;$k++){
echo '* ';
}
echo "<br/>";
}
for($i=3;$i>=0;$i--) {
for($x=0;$x<=3-$i;$x++) {
echo '&nbsp;';
}
for($y=0;$y<$i;$y++) {
echo '* ';
}
echo '<br/>';
}
?>
===========================================================================================
===========================================================================================
/***实现斐波那契数列,格式为:1,1,2,3,5,8…即当前数字为前两个数字之和.***/
<?php
function feibolaqi($num) {
$arr = array();
for($i=0;$i<=$num;$i++) {
if($i == 1 || $i == 2) {
$arr[$i-1] = 1;
} else {
$arr[$i-1] = $arr[$i-2] + $arr[$i-3];
}
}
return $arr;
}
?>
===========================================================================================
===========================================================================================

回文数就是顺着数和倒着数的数字都一样例如:1234321 

顺着数是1234321倒着数也是1234321

<?php
    $sum = $_POST['sum'];//修改为自己想要设定的数字
    $half = floor(strlen($sum)/2);
    $flag = true;
    for($i = 0;$i < $half;$i++){
        $x = substr($sum,$i,1);
        $y = substr($sum,strlen($sum) - $i - 1,1);
        if($x != $y){
            $flag = false;
            break;
        }
    }
    if($flag){
        echo $sum,'是回文数';
    }else{
        echo $sum,'不是回文数';
    }
?>

/***回文数***/
<?php
for($i=11;$i<999999;$i++){
 $len = strlen($i);//获取数字度
 $k = intval($len/2) + 1;//获取间位数
 $flag = 1;
 for($j=0;$j<$k;$j++){
  if(substr($i,$j,1)!=substr($i,$len-$j-1,1)){//两边间进行比比左边右边左边向右移位右边向左移位直间位或者两位现相等则$flag设置0并跳该for循环
   $flag = 0;
   break;
  }
 }
 if($flag==1){//根据$flag值判断否文数输
  echo $i,"文数","<br/>";
 }
}
===========================================================================================
===========================================================================================
/***PHP--求100以内的质数***/
for--php求质数
<?php
for($i=1;$i<=100;$i++){
  $k=0;
  for($j=1;$j<$i;$j++){
    if($i%$j==0){
     $k++; 
    }
  }
 if($k==1){
 echo $i;
 echo "&nbsp;&nbsp;";
 }
  }
?>

[PHP入门]求素数

方法一:判断素数的办法是用1到某个数之间的所有数去除这个数,如果能够整除这个数的数超过2个那么这个数就不是素数,反之如果能够整除这个数的数只有1个或者2个,那么他就是素数.

<?php
$n=1000;
echo $n."以内的素数:";
for($m=2;$m<=$n;$m++){   //第一层循环,循环1-$n直接的所有数
$k=0;                                 //计数器初始化 
for($i=1;$i<=$m;$i++){        //第二层循环,循环1-$m直接的所有数,$m属于区间【1,$n】 
if($m%$i==0){                    //取模运算,如果余数为0,K自增1
$k++;
}
}
if($k==2){                          //如果k的值等于1或者2,那么是素数,将其输出
echo $m."-";
}
}
?>

PHP 求任意n个正负整数里面最大的连续和
编写一个PHP函数。求任意n个正负整数里面最大的连续和,要求算法时间复杂度尽可能低;
例如:echo getMaxSum(array(-2,1,3,9,-4,2,3,5,-3,-4,1,3));//最大连续和是(1,3,9,-4,2,3,5)相加函数返回19
//算法分析:
//1、必须是整数序列
//2、如果整个序列不全是负数,最大子序列的第一项必须是正数,
//否则最大子序列后面的数加起来再加上第一项的负数,其和肯定不是最大的;
//3、如果整个序列都是负数,那么最大子序列的和是0;
<pre name="code" class="html">//全负数序列很简单,不举例
    $arr=array(-2,1,3,9,-4,2,3,5,-3,-4,1,3);
 
        $thissum=0;
        $maxsum=0;
        $start=0;//记录子序列的起始下标
        $end=0;//记录子序列的结束下标
        for($i=0;$i<count($arr);$i++){
            $thissum+=$arr[$i];//取得当前子序列的和
            if($thissum>$maxsum){//如果当前子序列的和大于当前最大子序列的和
                $maxsum=$thissum;//改变当前最大子序列的和
                $end=$i;
            }else if($thissum<0){//如果当前子序列的和小于0,则把下一个元素值假定为最大子序列的第一项,这里可以保证最大自序列的第
一项一定是正数
                $thissum=0;//前提这个序列不全是负数
                $start=$i+1;
            }
        }
        $parr=array($start,$end,$maxsum);
    list($start,$end,$maxsum)=$parr;
    print_r($arr);
    echo '最大子序列是:';
    for($i=$start;$i<=$end;$i++){
    echo $arr[$i].' ';
    }
    echo '<br>';
    echo '最大子序列的和是'.$maxsum;
 ?>Array
(
    [0] => -2
    [1] => 1
    [2] => 3
    [3] => 9
    [4] => -4
    [5] => 2
    [6] => 3
    [7] => 5
    [8] => -3
    [9] => -4
    [10] => 1
    [11] => 3
)
最大子序列是:1 3 9 -4 2 3 5 <br>最大子序列的和是19

//------------------------  
// 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;  
}  
?> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值