欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【使用PHP重新实现PHP脚本引擎内置函数】,下面是详细的分享!
使用PHP重新实现PHP脚本引擎内置函数
以下为引用的内容:
// 实在无聊,突发奇想,想把PHP里面部分已经提供封装好的函数重新使用PHP实现一遍,
// 于是便有了下面的代码主要实现了PHP中部分字符串处理函数,同时实现了一些PHP中
// 没有,但是同样有作用的字符串处理函数同样的这些函数,也能够使用其他语言来实
// 现,比如用C/VBScript/Perl等等,那么你就能够有一个自己的函数库.
// 以下函数不一定能够成功运行,只是为了学习而已。
//
// 如果无特别声明,全部是由于heiyeluren原创,要使用任何函数都请保留作者信息
// {{{ strlen()
function strlen1($str)
{
if ($str=='')
return 0;
$count=0;
while (1)
{
if ($str[$count] !=NULL)
{
$count++;
continue;
}
else
break;
}
return $count;
}
// }}}
// {{{ substr()
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()
function strrev1($str)
{
if ($str=='')
return 0;
for ($i=(strlen($str)-1); $i>=0; $i--)
{
$rev_str .=$str[$i];
}
return $rev_str;
}
// }}}
// {{{ strcmp()
function strcmp1($s1, $s2)
{
if (strlen($s1) < strlen($s2))
return -1;
if (strlen($s1) > strlen($s2))
return 1;
for ($i=0; $i
{
if ($s1[$i]==$s2[$i])
continue;
else
return false;
}
return 0;
}
// }}}
// {{{ strchr(), strstr(), strpos()
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()
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;
}
// }}}
// {{{ insert_str(), delete_str(), index_str()
function str_insert($str, $i, $substr)
{
for($j=0; $j<$i; $j++)
{
$startstr .=$str[$j];
}
for ($j=$i; $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
{
$laststr .=$str[$c];
}
$str=($startstr . $laststr);
return $str;
}
// }}}
// {{{ strcpy()
function strcpy($s1, $s2)
{
if (strlen($s1)==NULL)
return;
if (!isset($s2))
return;
for ($i=0; $i
{
$s2[]=$s1[$i];
}
return $s2;
}
// }}}
// {{{ strcat()
function strcat($s1, $s2)
{
if (!isset($s1))
return;
if (!isset($s2))
return;
$newstr=$s1 . $s2;
return $newsstr;
}
// }}}
// {{{ php_encode(), php_decode()
function php_encode($str)
{
if ($str=='' && strlen($str)>128)
return false;
for($i=0; $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;
}
function php_decode($str)
{
if ($str=='' && strlen($str)>128)
return false;
for($i=0; $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()
$encrypt_key='abcdefghijklmnopqrstuvwxyz1234567890';
$decrypt_key='ngzqtcobmuhelkpdawxfyivrsj2468021359';
function php_encrypt($str)
{
global $encrypt_key, $decrypt_key;
if (strlen($str)==0)
return false;
for ($i=0; $i
{
for ($j=0; $j
{
if ($str[$i]==$encrypt_key[$j])
{
$enstr .=$decrypt_key[$j];
break;
}
}
}
return $enstr;
}
function php_decrypt($str)
{
global $encrypt_key, $decrypt_key;
if (strlen($str)==0)
return false;
for ($i=0; $i
{
for ($j=0; $j
{
if ($str[$i]==$decrypt_key[$j])
{
$enstr .=$encrypt_key[$j];
break;
}
}
}
return $enstr;
}
// }}}
以上所分享的是关于使用PHP重新实现PHP脚本引擎内置函数,下面是编辑为你推荐的有价值的用户互动:
相关问题:PHP内置函数是否应当再次封装成自己的函数
答:像这种问题,具体问题具体分析. 如果几个方法集合调用频繁,则是可以封装的. 只是封装的时候,做好错误处理,就像你说的,出问题以后要能debug到最开始的部分. 或者 多少使用一些类似于 PHP_Debug 的工具. >>详细
相关问题:在php的构造函数内发现一个load函数,这个是phpcms...
答:是的,他自己写的一个函数 >>详细
相关问题:请问如何能够看到php的底层c代码分别是如何实现各...
答:php 安装包的 底层架构,你能找到, 但我估计 你看不懂. php 可以称之为控制语言, C 才是底层执行的语言. 你如果想知道 c代码如果实现,我建议你要很熟悉 C 语言才行.. 不多说了.. >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
