使用php重新实现PHP脚本引擎内置函数
2018-09-07 12:06
//实在无聊,突发奇想,想把PHP里面部分已经提供封装好的函数重新使用PHP实现一遍,
//于是便有了下面的代码主要实现了PHP中部分字符串处理函数,同时实现了一些PHP中
//没有,但是同样有作用的字符串处理函数同样的这些函数,也能够使用其他语言来实
//现,比如用C/VBScript/Perl等等,那么你就能够有一个自己的函数库.
//以下函数不一定能够成功运行,只是为了学习而已。
//
//如果无特别声明,全部是由于heiyeluren原创,要使用任何函数都请保留作者信息
/**
*StringFunctionsReconstruct
*
*$Id:StringFunctions.php,v0.1e2005-5-2923:21heiyelurenExp$
**/
//{{{strlen()
/**
*Countstringlength
*
*@paramstring$strneedcountlengthstringvariable
*@returnintreturncountresult
*@versionv0.1
*@create2005-5-24
*@modified2005-5-24
*@authorheiyeluren<hyeiyeluren@163.com>
*/
functionstrlen1($str)
{
if($str==)
return0;
$count=0;
while(1)
{
if($str[$count]!=NULL)
{
$count++;
continue;
}
else
break;
}
return$count;
}
//}}}
//{{{substr()
/**
*Getsubstring
*
*@paramstring$strneedgetsubstringvariable
*@paramint$startstartgetsubstring
*@paramint$lengthneedgetstringlength
*@returnstringreturnsubstring
*@versionv0.2
*@create2005-5-24
*@modified2005-5-25
*@authorheiyeluren<hyeiyeluren@163.com>
*/
functionsubstr1($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()
/**
*Reversalstringorder
*
*@paramstring$strneedreversalstringvariable
*@returnstringreversalstring
*@versionv0.1
*@create2005-5-24
*@modified2005-5-24
*@authorheiyeluren<hyeiyeluren@163.com>
*/
functionstrrev1($str)
{
if($str==)
return0;
for($i=(strlen($str)-1);$i>=0;$i--)
{
$rev_str.=$str[$i];
}
return$rev_str;
}
//}}}
//{{{strcmp()
/**
*Stringcomparison
*
*@paramstring$s1firststring
*@paramstring$s2secondstring
*@returnintreturn-1,str1<str2;return1,str1>str2,str1=str2,
*return0,other,returnfalse
*@versionv0.1
*@create2005-5-24
*@modified2005-5-24
*@authorheiyeluren<hyeiyeluren@163.com>
*/
functionstrcmp1($s1,$s2)
{
if(strlen($s1)<strlen($s2))
return-1;
if(strlen($s1)>strlen($s2))
return1;
for($i=0;$i<strlen($s1);$i++)
{
if($s1[$i]==$s2[$i])
continue;
else
returnfalse;
}
return0;
}
//}}}
//{{{strchr(),strstr(),strpos()
/**
*Findfirstoccurrenceofastring
*
*@paramstring$strparentstring
*@paramstring$substrneedmatchsubstring
*@returnintreturnfindsubstringatparentstringfirstplace,
*fnotfind,returnfalse
*@versionv0.4
*@create2005-5-24
*@modified2005-5-29
*@authorheiyeluren<hyeiyeluren@163.com>
*/
functionstrchr1($str,$substr)
{
$m=strlen($str);
$n=strlen($substr);
if($m<$n)
returnfalse;
for($i=0;$i<=($m-$n+1);$i++)
{
$sub=substr($str,$i,$n);
if(strcmp($sub,$substr)==0)
return$i;
}
returnfalse;
}
//}}}
//{{{str_replace()
/**
*Replacealloccurrencesofthesearchstringwiththereplacementstring
*
*@paramstring$substrneedreplacesubstringvariable
*@paramstring$newsubstrnewsubstring
*@paramstring$stroperateparentstring
*@returnstringreturnreplaceafternewparentstring
*@versionv0.2
*@create2005-5-24
*@modified2005-5-29
*@authorheiyeluren<hyeiyeluren@163.com>
*/
functionstr_replace1($substr,$newsubstr,$str)
{
$m=strlen($str);
$n=strlen($substr);
$x=strlen($newsubstr);
if(strchr($str,$substr)==false)
returnfalse;
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()
/**
*Basicstringoperate
*
*@paramstring$strneedgetsubstringvariable
*@paramint$startstartgetsubstring
*@paramint$lengthneedgetstringlength
*@returnstringreturnsubstring
*@versionv0.1
*@create2005-5-24
*@modified2005-5-24
*@authorheiyeluren<hyeiyeluren@163.com>
*/
functionstr_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;
}
functionstr_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()
/**
*Usedesignatesubstringreplacestring
*
*@paramstring$strneedgetsubstringvariable
*@paramint$startstartgetsubstring
*@paramint$lengthneedgetstringlength
*@returnstringreturnsubstring
*@versionv0.1
*@create2005-5-27
*@modified2005-5-27
*@authorheiyeluren<hyeiyeluren@163.com>
*/
functionstrcpy($s1,$s2)
{
if(strlen($s1)==NULL)
return;
if(!isset($s2))
return;
for($i=0;$i<strlen($s1);$i++)
{
$s2[]=$s1[$i];
}
return$s2;
}
//}}}
//{{{strcat()
/**
*Usedesignatesubstringreplacestring
*
*@paramstring$strneedgetsubstringvariable
*@paramint$startstartgetsubstring
*@paramint$lengthneedgetstringlength
*@returnstringreturnsubstring
*@versionv0.1
*@create2005-5-27
*@modified2005-5-27
*@authorheiyeluren<hyeiyeluren@163.com>
*/
functionstrcat($s1,$s2)
{
if(!isset($s1))
return;
if(!isset($s2))
return;
$newstr=$s1.$s2;
return$newsstr;
}
//}}}
//{{{php_encode(),php_decode()
/**
*Simplestringencode/decodefunction
*
*@paramstring$strneedcode/encodestringvariable
*@returnstringcode/encodeafterstring
*@versionv0.2
*@create2005-3-11
*@modified2005-5-24
*@authorheiyeluren<hyeiyeluren@163.com>
*/
/*Stringencodefunction*/
functionphp_encode($str)
{
if($str==&&strlen($str)>128)
returnfalse;
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;
}
/*Stringdecodefunction*/
functionphp_decode($str)
{
if($str==&&strlen($str)>128)
returnfalse;
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()
/**
*Simplestringencrypt/decryptfunction
*
*@paramstring$strneedcryptstringvariable
*@returnstringencrypt/decryptafterstring
*@versionv0.1
*@create2005-5-27
*@modified2005-5-29
*@authorheiyeluren<hyeiyeluren@163.com>
*/
/*definecryptkey*/
$encrypt_key=abcdefghijklmnopqrstuvwxyz1234567890;
$decrypt_key=ngzqtcobmuhelkpdawxfyivrsj2468021359;
/*Stringencryptfunction*/
functionphp_encrypt($str)
{
global$encrypt_key,$decrypt_key;
if(strlen($str)==0)
returnfalse;
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;
}
/*Stringdecryptfunction*/
functionphp_decrypt($str)
{
global$encrypt_key,$decrypt_key;
if(strlen($str)==0)
returnfalse;
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的博客: