使用php重新實現(xiàn)PHP腳本引擎內(nèi)置函數(shù)
// 實在無聊,突發(fā)奇想,想把PHP里面部分已經(jīng)提供封裝好的函數(shù)重新使用PHP實現(xiàn)一遍, // 于是便有了下面的代碼主要實現(xiàn)了PHP中部分字符串處理函數(shù),同時實現(xiàn)了一些PHP中 // 沒有,但是同樣有作用的字符串處理函數(shù)同樣的這些函數(shù),也能夠使用其他語言來實; // 現(xiàn),比如用C/VBScript/Perl等等,那么你就能夠有一個自己的函數(shù)庫.;;;// 以下函數(shù)不一定能夠成功運行,只是為了學(xué)習(xí)而已。;;//// 如果無特別聲明,全部是由于heiyeluren原創(chuàng),要使用任何函數(shù)都請保留作者信息;
/*** String Functions Reconstruct ** Copyright (c) 2005 heiyeluren <[email protected]>* Author: heiyeluren <[email protected]>
* $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 <[email protected]>*/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 <[email protected]>*/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 <[email protected]>*/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 <[email protected]>*/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 <[email protected]>*/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 <[email protected]>*/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;}// }}}
/************ 以下串處理函數(shù)是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 <[email protected]>*/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 <[email protected]>*/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 <[email protected]>*/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 <[email protected]>*/
/* 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 <[email protected]>*/
/* 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
