Home > Article > Backend Development > Use php to reimplement the PHP script engine built-in functions_PHP tutorial
// I’m really bored, and I had a sudden idea to re-implement some of the encapsulated functions in PHP using PHP.
// So I have the following code that mainly implements some of the functions in PHP. String processing functions also implement some string processing functions that are not available in PHP, but are equally useful. These same functions can also be implemented in other languages
// such as C/ VBScript/Perl, etc., then you can have your own function library.
// The following functions may not necessarily run successfully, just for learning.
// 🎜>
/**
* String Functions Reconstruct
*
* Copyright (c) 2005 heiyeluren
* Author: heiyeluren
* $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
*/
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
*/
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
*/
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
*/
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()
/**
* 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
*/
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
*/
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;
}
// }}}
/************ The following string processing functions are not available in PHP, so I wrote them myself for fun ***************/
// {{{ 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
*/
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()
/**
* 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
*/
function strcpy($s1, $s2)
{
if (strlen($s1) == NULL)
return;
if (!isset($s2))
return;
for ($i=0; $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
*/
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
*/
/* String encode function */
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;
}
/* String decode function */
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()
/**
* 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
*/
/* 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
for ($j=0; $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
for ($j=0; $j
if ($str[$i] == $decrypt_key[$j])
{
$enstr .= $encrypt_key[$j];
break;
}
}
}
return $enstr;
}
// }}}
如果代码不清晰的话,建议查看一下连接,是我在blogchina的博客:
http://heiyeluren.blogchina.com/1741318.html