精灵巫婆 发表于 2015-2-4 00:13:29

PHP网站制作之数据布局和字符串处置代码收拾整顿

根据功能来进行封装等。很多的不懂,在使用搜索引擎查找,或者请教老师和在老师详细的讲解、指导下,都能顺利解决。数据|数据布局|字符串   收拾整顿一下之前写的局部算法和字符串处置函数,器材没有甚么用,只是为了进修罢了。

Author: heiyeluren
Blog: http://blog.csdn.net/heiyeshuwu
Date: 2006-06-10 23:50


<?
//--------------------
// 根基数据布局算法
//--------------------

//二分查找(数组里查找某个元素)
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 quick_sort($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 = quick_sort($left_arr);
      $right_arr = quick_sort($right_arr);

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



//------------------------
// 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 &&, amp; $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;
}

?>
算是1个熟悉的过程,所以c语言的基础有就更好,没有也不怕。

第二个灵魂 发表于 2015-2-4 10:00:04

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql

小魔女 发表于 2015-2-9 02:56:16

做为1门年轻的语言,php一直很努力。

只想知道 发表于 2015-2-10 12:27:18

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

admin 发表于 2015-2-13 19:50:28

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

分手快乐 发表于 2015-3-1 21:45:14

实践是检验自己会不会的真理。

飘飘悠悠 发表于 2015-3-2 20:49:32

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

小妖女 发表于 2015-3-3 14:33:48

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

愤怒的大鸟 发表于 2015-3-7 04:51:38

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。

谁可相欹 发表于 2015-3-14 10:31:19

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

莫相离 发表于 2015-3-21 01:43:58

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

爱飞 发表于 2015-3-21 18:33:36

对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。

不帅 发表于 2015-4-6 03:12:03

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

飘灵儿 发表于 2015-4-7 12:55:07

使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。

冷月葬花魂 发表于 2015-4-15 06:13:51

,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。

若天明 发表于 2015-4-22 05:55:33

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

柔情似水 发表于 2015-4-25 23:37:50

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

因胸联盟 发表于 2015-5-1 10:11:45

你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。

深爱那片海 发表于 2015-5-1 18:10:50

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

兰色精灵 发表于 2015-5-6 03:42:31

写的比较杂,因为我也是个新手,不当至于大家多多指正。
页: [1] 2
查看完整版本: PHP网站制作之数据布局和字符串处置代码收拾整顿