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