您的位置:首页技术文章
文章详情页

使用php重新实现PHP脚本引擎内置函数

浏览:11日期:2024-02-01 18:22:33

// 实在无聊,突发奇想,想把PHP里面部分已经提供封装好的函数重新使用PHP实现一遍, // 于是便有了下面的代码主要实现了PHP中部分字符串处理函数,同时实现了一些PHP中 // 没有,但是同样有作用的字符串处理函数同样的这些函数,也能够使用其他语言来实; // 现,比如用C/VBScript/Perl等等,那么你就能够有一个自己的函数库.;;;// 以下函数不一定能够成功运行,只是为了学习而已。;;//// 如果无特别声明,全部是由于heiyeluren原创,要使用任何函数都请保留作者信息;

/*** String Functions Reconstruct ** Copyright (c) 2005 heiyeluren <heiyeluren@163.com>* Author: heiyeluren <heiyeluren@163.com>

* $Id: StringFunctions.php,v 0.1 e 2005-5-29 23:21 heiyeluren Exp $**/

// {{{ strlen()/*** Count string length** @param string $str need count length string variable * @return int;return count result* @version v0.1* @create 2005-5-24* @modified 2005-5-24 * @author heiyeluren <hyeiyeluren@163.com>*/function strlen1($str){if ($str == '') return 0;$count = 0;while (1){ if ($str[$count] != NULL) { $count++; continue; } else break;}return $count;}// }}}

// {{{ substr()/*** Get sub string** @param string $str need get sub string variable* @param int; $start start get sub string* @param int; $length need get string length* @return stringreturn sub string* @version v0.2* @create 2005-5-24* @modified 2005-5-25 * @author heiyeluren <hyeiyeluren@163.com>*/function substr1($str, $start, $length=0){if ($str == '') return;if ($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;}// }}}

// {{{ strrev()/*** Reversal string order** @param string $str need reversal string variable* @return stringreversal string* @version v0.1 www.mypchelp.cn* @create 2005-5-24* @modified 2005-5-24 * @author heiyeluren <hyeiyeluren@163.com>*/function strrev1($str){if ($str == '') return 0;for ($i=(strlen($str)-1); $i>=0; $i--){ $rev_str .= $str[$i];}return $rev_str;}// }}}

// {{{ strcmp()/*** String comparison** @param string $s1 first string* @param string $s2 second string* @return int; return -1,str1 < str2; return 1, str1 > str2, str1 = str2, *;return 0, other, return false* @version v0.1* @create 2005-5-24* @modified 2005-5-24 * @author heiyeluren <hyeiyeluren@163.com>*/function strcmp1($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;}// }}}

// {{{ strchr(), strstr(), strpos()/*** Find first occurrence of a string** @param string $str parent string* @param string $substr need match sub string* @return int; return find sub string at parent string first place, *;f not find, return false* @version v0.4* @create 2005-5-24* @modified 2005-5-29 * @author heiyeluren <hyeiyeluren@163.com>*/function strchr1($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;}// }}}

// {{{ str_replace()/*** Replace all occurrences of the search string with the replacement string** @param string $substr; need replace sub string variable* @param string $newsubstr new sub string* @param string $str; operate parent string* @return stringreturn replace after new parent string* @version v0.2* @create 2005-5-24* @modified 2005-5-29 * @author heiyeluren <hyeiyeluren@163.com>*/function str_replace1($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;}// }}}

/************ 以下串处理函数是PHP中没有的,自己写着玩 ***************/

// {{{ insert_str(), delete_str(), index_str()/*** Basic string operate** @param string $str need get sub string variable* @param int; $start start get sub string* @param int; $length need get string length* @return string; return sub string* @version v0.1* @create 2005-5-24* @modified 2005-5-24 * @author heiyeluren <hyeiyeluren@163.com>*/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;}// }}}

// {{{ strcpy()/*** Use designate sub string; replace string** @param string $str need get sub string variable* @param int; $start start get sub string* @param int; $length need get string length* @return string; return sub string* @version v0.1* @create 2005-5-27* @modified 2005-5-27 * @author heiyeluren <hyeiyeluren@163.com>*/function strcpy($s1, $s2){if (strlen($s1) == NULL) return;if (!isset($s2)) return;

for ($i=0; $i<strlen($s1); $i++){ $s2[] = $s1[$i];}return $s2;}// }}}

// {{{ strcat()/*** Use designate sub string; replace string** @param string $str need get sub string variable* @param int; $start start get sub string* @param int; $length need get string length* @return string; return sub string* @version v0.1* @create 2005-5-27* @modified 2005-5-27 * @author; heiyeluren <hyeiyeluren@163.com>*/function strcat($s1, $s2){if (!isset($s1)) return;if (!isset($s2)) return;

$newstr = $s1 . $s2;

return $newsstr;}// }}}

// {{{ php_encode(), php_decode()/*** Simple string encode/decode function** @param string $str need code/encode string variable * @return string; code/encode after string* @version v0.2* @create 2005-3-11* @modified 2005-5-24 * @author heiyeluren <hyeiyeluren@163.com>*/

/* String encode function */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; }

/* String decode function */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_encrypt(), php_decrypt()/*** Simple string encrypt/decrypt function** @param string $str need crypt string variable * @return string; encrypt/decrypt after string* @version v0.1* @create 2005-5-27* @modified 2005-5-29 * @author heiyeluren <hyeiyeluren@163.com>*/

/* define crypt key */$encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890';$decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359';

/* String encrypt function */function php_encrypt($str){global $encrypt_key, $decrypt_key;

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;}

/* String decrypt function */function php_decrypt($str){global $encrypt_key, $decrypt_key;

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;}// }}}

如果代码不清晰的话,建议查看一下连接,是我在blogchina的博客:

http://heiyeluren.blogchina.com/1741318.html

标签: PHP