仓酷云

标题: PHP编程:从头完成PHP剧本引擎内置函数 [打印本页]

作者: 海妖    时间: 2015-2-3 23:52
标题: PHP编程:从头完成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 ((&#36;length != NULL) && (&#36;start < 0) && (&#36;length > strlen(&#36;str)+&#36;start))
return;
if (&#36;length == NULL)
&#36;length = (strlen(&#36;str) - &#36;start);
if (&#36;start < 0)
{
for (&#36;i=(strlen(&#36;str)+&#36;start); &#36;i<(strlen(&#36;str)+&#36;start+&#36;length); &#36;i++)
{
&#36;substr .= &#36;str[&#36;i];
}
}
if (&#36;length > 0)
{
for (&#36;i=&#36;start; &#36;i<(&#36;start+&#36;length); &#36;i++)
{
&#36;substr .= &#36;str[&#36;i];
}
}
if (&#36;length < 0)
{
for (&#36;i=&#36;start; &#36;i<(strlen(&#36;str)+&#36;length); &#36;i++)
{
&#36;substr .= &#36;str[&#36;i];
}
}
return &#36;substr;
}
// }}}
// {{{ strrev()
/**
* Reversal string order
*
* @param string &#36;str need reversal string variable
* @return string reversal string
* @version v0.1 www.knowsky.com
* @create 2005-5-24
* @modified 2005-5-24
* @author heiyeluren
*/
function strrev1(&#36;str)
{
if (&#36;str == '')
return 0;
for (&#36;i=(strlen(&#36;str)-1); &#36;i>=0; &#36;i--)
{
&#36;rev_str .= &#36;str[&#36;i];
}
return &#36;rev_str;
}
// }}}
// {{{ strcmp()
/**
* String comparison
*
* @param string &#36;s1 first string
* @param string &#36;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(&#36;s1, &#36;s2)
{
if (strlen(&#36;s1) < strlen(&#36;s2))
return -1;
if (strlen(&#36;s1) > strlen(&#36;s2))
return 1;
for (&#36;i=0; &#36;i
{
if (&#36;s1[&#36;i] == &#36;s2[&#36;i])
continue;
else
return false;
}
return 0;
}
// }}}
// {{{ strchr(), strstr(), strpos()
/**
* Find first occurrence of a string
*
* @param string &#36;str parent string
* @param string &#36;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(&#36;str, &#36;substr)
{
&#36;m = strlen(&#36;str);
&#36;n = strlen(&#36;substr);
if (&#36;m < &#36;n)
return false;
for (&#36;i=0; &#36;i<=(&#36;m-&#36;n+1); &#36;i++)
{
&#36;sub = substr(&#36;str, &#36;i, &#36;n);
if (strcmp(&#36;sub, &#36;substr) == 0)
return &#36;i;
}
return false;
}
// }}}
// {{{ str_replace()
/**
* WordStr all occurrences of the search string with the replacement string
*
* @param string &#36;substr need replace sub string variable
* @param string &#36;newsubstr new sub string
* @param string &#36;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(&#36;substr, &#36;newsubstr, &#36;str)
{
&#36;m = strlen(&#36;str);
&#36;n = strlen(&#36;substr);
&#36;x = strlen(&#36;newsubstr);
if (strchr(&#36;str, &#36;substr) == false)
return false;
for (&#36;i=0; &#36;i<=(&#36;m-&#36;n+1); &#36;i++)
{
&#36;i = strchr(&#36;str, &#36;substr);
&#36;str = str_delete(&#36;str, &#36;i, &#36;n);
&#36;str = str_insert(&#36;str, &#36;i, &#36;newstr);
}
return &#36;str;
}
// }}}
/************ 以下串处置函数是PHP中没有的,本人写着玩 ***************/
// {{{ insert_str(), delete_str(), index_str()
/**
* Basic string operate
*
* @param string &#36;str need get sub string variable
* @param int &#36;start start get sub string
* @param int &#36;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(&#36;str, &#36;i, &#36;substr)
{
for(&#36;j=0; &#36;j<&#36;i; &#36;j++)
{
&#36;startstr .= &#36;str[&#36;j];
}
for (&#36;j=&#36;i; &#36;j
{
&#36;laststr .= &#36;str[&#36;j];
}
&#36;str = (&#36;startstr . &#36;substr . &#36;laststr);
return &#36;str;
}
function str_delete(&#36;str, &#36;i, &#36;j)
{
for (&#36;c=0; &#36;c<&#36;i; &#36;c++)
{
&#36;startstr .= &#36;str[&#36;c];
}
for (&#36;c=(&#36;i+&#36;j); &#36;c
{
&#36;laststr .= &#36;str[&#36;c];
}
&#36;str = (&#36;startstr . &#36;laststr);
return &#36;str;
}
// }}}
// {{{ strcpy()
/**
* Use designate sub string replace string
*
* @param string &#36;str need get sub string variable
* @param int &#36;start start get sub string
* @param int &#36;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(&#36;s1, &#36;s2)
{
if (strlen(&#36;s1) == NULL)
return;
if (!isset(&#36;s2))
return;
for (&#36;i=0; &#36;i
{
&#36;s2[] = &#36;s1[&#36;i];
}
return &#36;s2;
}
// }}}
// {{{ strcat()
/**
* Use designate sub string replace string
*
* @param string &#36;str need get sub string variable
* @param int &#36;start start get sub string
* @param int &#36;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(&#36;s1, &#36;s2)
{
if (!isset(&#36;s1))
return;
if (!isset(&#36;s2))
return;
&#36;newstr = &#36;s1 . &#36;s2;
return &#36;newsstr;
}
// }}}
// {{{ php_encode(), php_decode()
/**
* Simple string encode/decode function
*
* @param string &#36;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(&#36;str)
{
if (&#36;str=='' && strlen(&#36;str)>128)
return false;
for(&#36;i=0; &#36;i
{
&#36;c = ord(&#36;str[&#36;i]);
if (&#36;c>31 && &#36;c<107)
&#36;c += 20;
if (&#36;c>106 && &#36;c<127)
&#36;c -= 75;
&#36;word = chr(&#36;c);
&#36;s .= &#36;word;
}
return &#36;s;
}
/* String decode function */
function php_decode(&#36;str)
{
if (&#36;str=='' && strlen(&#36;str)>128)
return false;
for(&#36;i=0; &#36;i
{
&#36;c = ord(&#36;word);
if (&#36;c>106 && &#36;c<127)
&#36;c = &#36;c-20;
if (&#36;c>31 && &#36;c<107)
&#36;c = &#36;c+75;
&#36;word = chr(&#36;c);
&#36;s .= &#36;word;
}
return &#36;s;
}
// }}}
// {{{ php_encrypt(), php_decrypt()
/**
* Simple string encrypt/decrypt function
*
* @param string &#36;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 */
&#36;encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890';
&#36;decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359';
/* String encrypt function */
function php_encrypt(&#36;str)
{
global &#36;encrypt_key, &#36;decrypt_key;
if (strlen(&#36;str) == 0)
return false;
for (&#36;i=0; &#36;i
{
for (&#36;j=0; &#36;j
{
if (&#36;str[&#36;i] == &#36;encrypt_key[&#36;j])
{
&#36;enstr .= &#36;decrypt_key[&#36;j];
break;
}
}
}
return &#36;enstr;
}
/* String decrypt function */
function php_decrypt(&#36;str)
{
global &#36;encrypt_key, &#36;decrypt_key;
if (strlen(&#36;str) == 0)
return false;
for (&#36;i=0; &#36;i
{
for (&#36;j=0; &#36;j
{
if (&#36;str[&#36;i] == &#36;decrypt_key[&#36;j])
{
&#36;enstr .= &#36;encrypt_key[&#36;j];
break;
}
}
}
return &#36;enstr;
}
// }}}
开发相册系统过程中就有过这样的问题,因为没有交流好,出现重复工作问题,因为文档没有详细的说明而经常临时问对方。
作者: 再现理想    时间: 2015-2-4 06:41
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: 谁可相欹    时间: 2015-2-9 17:50
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 透明    时间: 2015-2-11 04:27
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 小妖女    时间: 2015-2-21 19:49
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 蒙在股里    时间: 2015-2-26 22:55
做为1门年轻的语言,php一直很努力。
作者: 只想知道    时间: 2015-2-28 02:05
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 活着的死人    时间: 2015-3-1 12:44
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 老尸    时间: 2015-3-10 16:53
实践是检验自己会不会的真理。
作者: 冷月葬花魂    时间: 2015-3-13 02:36
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
作者: 小魔女    时间: 2015-3-15 01:54
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者: 简单生活    时间: 2015-3-18 01:45
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
作者: 仓酷云    时间: 2015-3-20 10:58
本文当是我的笔记啦,遇到的问题随时填充
作者: 海妖    时间: 2015-3-28 20:54
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者: 若相依    时间: 2015-4-2 19:45
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 莫相离    时间: 2015-4-4 13:21
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 小女巫    时间: 2015-4-13 15:38
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者: 因胸联盟    时间: 2015-4-22 03:54
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 深爱那片海    时间: 2015-4-23 04:14
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 愤怒的大鸟    时间: 2015-4-23 10:52
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
作者: 兰色精灵    时间: 2015-4-26 14:09
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2