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

时间:2021-05-25



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


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

*$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>
*/


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



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>
*/


$encrypt_key='abcdefghijklmnopqrstuvwxyz1234567890';
$decrypt_key='ngzqtcobmuhelkpdawxfyivrsj2468021359';


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



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的博客:

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


声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章