使用php重新实现PHP脚本引擎内置函数
作者:欧阳聪2502931613 | 来源:互联网 | 2022-07-30 00:03
使用php重新实现PHP脚本引擎内置函数
// 实在无聊,突发奇想,想把PHP里面部分已经提供封装好的函数重新使用PHP实现一遍, // 于是便有了下面的代码主要实现了PHP中部分字符串处理函数,同时实现了一些PHP中 // 没有,但是同样有作用的字符串处理函数同样的这些函数,也能够使用其他语言来实 // 现,比如用C/Vbscript/Perl等等,那么你就能够有一个自己的函数库. // 以下函数不一定能够成功运行,只是为了学习而已。 // // 如果无特别声明,全部是由于heiyeluren原创,要使用任何函数都请保留作者信息 /** * 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; } // }}} /************ 以下串处理函数是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 */ 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
推荐阅读
本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ...
[详细]
蜡笔小新 2023-12-14 17:15:19
本文介绍了Linux环境变量$PATH的作用及使用方法。$PATH是一个由多个目录组成的变量,用冒号分隔。当执行一个指令时,系统会按照$PATH定义的目录顺序搜索同名的可执行文件,如果有多个同名指令,则先找到的会被执行。通过设置$PATH变量,可以在任何地方执行指令,无需输入绝对路径。 ...
[详细]
蜡笔小新 2023-12-10 15:26:56
本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ...
[详细]
蜡笔小新 2023-12-10 14:45:37
本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ...
[详细]
蜡笔小新 2023-12-09 17:36:44
本文目录一览:1、如何在IIS中执行Python脚本 ...
[详细]
蜡笔小新 2023-10-17 19:41:52
有关phpfgetss()函数的文章推荐10篇:了解如何使用PHP的各种文件函数。查看诸如fopen、fclose和feof之类的基本文件函数;了解诸如fgets、fgetss和f ...
[详细]
蜡笔小新 2023-10-17 15:45:58
导读:在编程的世界里,语言纷繁多样,而大部分真正广泛流行的语言并不是那些学术界的产物,而是在通过自由发挥设计出来的。和那些 ...
[详细]
蜡笔小新 2023-10-17 15:22:41
本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ...
[详细]
蜡笔小新 2023-12-14 18:18:21
本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ...
[详细]
蜡笔小新 2023-12-14 17:06:58
本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ...
[详细]
蜡笔小新 2023-12-14 12:37:25
本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ...
[详细]
蜡笔小新 2023-12-13 18:29:11
本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ...
[详细]
蜡笔小新 2023-12-13 17:36:52
腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ...
[详细]
蜡笔小新 2023-12-10 17:01:40
loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ...
[详细]
蜡笔小新 2023-10-17 21:26:42
vb.net不用多线程如何同时运行两个过程?不用多线程?即使用多线程,也不会是“同时”执行,题主只要略懂一些计算机编译原理就能明白了。不用多线程更不可能让两个过程同步执行了。不过可 ...
[详细]
蜡笔小新 2023-10-17 18:18:35
欧阳聪2502931613
这个家伙很懒,什么也没留下!